home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / INTER53A.ZIP / INTERRUP.C < prev    next >
Text File  |  1997-01-12  |  325KB  |  8,800 lines

  1. Interrupt List, part 3 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------T-1513-------------------------------
  4. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  5.     AH = 13h
  6.     STACK:    WORD    process ID
  7. Return: AX = status (SYS_OK or SYS_ERROR)
  8. SeeAlso: AH=12h"VMiX"
  9. --------T-1513-------------------------------
  10. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  11.     AH = 13h
  12. Return: BX:AX -> task control block (see #0360)
  13. SeeAlso: AH=15h"MultiDOS"
  14.  
  15. Format of MultiDOS Plus v4.0 task control block:
  16. Offset    Size    Description    (Table 0360)
  17.  00h    DWORD    pointer to next TCB
  18.  04h  8 BYTEs    ASCIZ task name
  19.  0Ch  2 BYTEs    ???
  20.  0Eh    WORD    task PSP segment
  21.  10h    WORD    abort/suspend flags
  22.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  23.  14h    WORD    priority level (0000h-FFFEh)
  24.  16h    WORD    time slice counter
  25.  18h  2 BYTEs    ???
  26.  1Ah    WORD    suspend timer value
  27.  1Ch    WORD    stack segment
  28.  1Eh    WORD    stack pointer
  29.  20h    WORD    display type
  30.  22h    WORD    display memory
  31.  24h  2 BYTEs    ???
  32.  26h    WORD    termination count
  33.  28h    WORD    equipment flag for BIO10 driver
  34.  2Ah    BYTE    background CRT mode
  35.  2Bh    WORD    screen width in columns
  36.  2Dh    WORD    screen size in bytes
  37.  2Fh    WORD    segment of physical screen memory
  38.  31h 16 BYTEs    eight cursor positions
  39.  41h    WORD    current cursor shape
  40.  43h    BYTE    active display page
  41.  44h    WORD    CRT controller I/O port base
  42.  46h  2 BYTEs    ???
  43.  48h    WORD    foreground task flag
  44.  4Ah  6 BYTEs    ???
  45.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  46.  52h    DWORD    old INT 22
  47.  56h    DWORD    old INT 23
  48.  5Ah    DWORD    old INT 24
  49.  5Eh    WORD    top of memory for task
  50.  60h  4 BYTEs    ???
  51.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  52.  66h    WORD    DTA offset
  53.  68h  4 BYTEs    ???
  54.  6Ch    BYTE    current ANSI.SYS attribute
  55.  6Dh    BYTE    current ANSI.SYS column
  56.  6Eh    BYTE    current ANSI.SYS row
  57.  6Fh    BYTE    current ANSI.SYS display state
  58.  70h    BYTE    maximum ANSI.SYS columns
  59.  71h    BYTE    current ANSI.SYS page
  60.  72h    WORD    saved ANSI.SYS cursor position
  61.  74h    BYTE    ANSI.SYS parameter buffer index
  62.  75h    BYTE    current ANSI.SYS screen mode
  63.  76h    BYTE    ANSI.SYS wrap flag
  64.  77h  6 BYTEs    ANSI.SYS parameter buffer
  65.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  66.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  67.  85h  3 BYTEs    ???
  68.  88h 16 BYTEs    request header for DOS driver calls
  69.  98h 14 BYTEs    ???
  70.  A6h    WORD    segment of EMS map if EMS task
  71.  A8h    WORD    flag: task makes EMS calls
  72.  AAh    WORD    EMS handle for task
  73.  ACh    WORD    keyboard shift state
  74.  AEh 12 BYTEs    ???
  75.  BAh    WORD    TCB of parent if child task
  76.  BCh    WORD    termination code
  77.  BEh    WORD    COM port number
  78.  C0h  4 BYTEs    ???
  79.  C4h    WORD    current IRQ number
  80.  C6h  2 BYTEs    ???
  81.  C8h    WORD    miscellaneous flag word
  82.  CAh  2 BYTEs    ???
  83.  CCh    DWORD    old INT 10
  84.  D0h    WORD    EMS alternate map set number
  85.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  86. --------T-1514-------------------------------
  87. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  88.     AH = 14h
  89.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  90.         WORD    bottom right corner of window (high = row, low = col)
  91. Return: AX = status (SYS_OK)
  92. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  93. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  94. --------T-1514-------------------------------
  95. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  96.     AH = 14h
  97. Return: AX = current state
  98.         0000h MultiDOS Plus command prompt is background task
  99.         0001h command prompt is foreground task
  100. SeeAlso: AH=0Bh"MultiDOS"
  101. --------T-1515-------------------------------
  102. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  103.     AH = 15h
  104.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  105. Return: AX = status (SYS_OK)
  106. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  107. --------T-1515-------------------------------
  108. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  109.     AH = 15h
  110. Return: BX:AX -> system block (see #0361)
  111. SeeAlso: AH=13h"MultiDOS"
  112.  
  113. Format of MultiDOS Plus 4.0 system block:
  114. Offset    Size    Description    (Table 0361)
  115.  00h    WORD    segment of system control block
  116.  02h    WORD    redirection flag set by /NOREDIRECT
  117.  04h    WORD    no-INT 10 flag set by /NO10
  118.  06h    DWORD    old INT 10
  119.  0Ah    DWORD    new INT 10
  120.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0360)
  121.  12h    DWORD    pointer to WORD with idle task TCB offset
  122.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0360)
  123.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0360)
  124.  1Eh    WORD    Task Control Block size
  125.  20h    WORD    number of TCBs
  126.  22h    WORD    flag: EMS present
  127.  24h    WORD    EMS page frame base segment
  128.  26h    WORD    16K pages in EMS page frame
  129.  28h    WORD    base segment for conventional memory tasks
  130.  2Ah    WORD    conventional memory size in paragraphs
  131.  2Ch    DWORD    pointer to list of queue pointers
  132. --------T-1516-------------------------------
  133. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  134.     AH = 16h
  135.     STACK:    DWORD    pointer to I/O Request Packet
  136.         WORD    top left corner of window (high byte = row, low = col)
  137.         WORD    bottom right corner of window (high = row, low = col)
  138. Return: AX = status (SYS_OK or SYS_ERROR)
  139. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  140. --------T-1516-------------------------------
  141. INT 15 - MultiDOS Plus - INITIALIZATION
  142.     AH = 16h
  143. Note:    used internally during initialization; any other calls will cause
  144.       unpredictable results
  145. --------T-1517-------------------------------
  146. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  147.     AH = 17h
  148. Return: AH = foreground color
  149.     AL = background color
  150. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  151. --------T-1517-------------------------------
  152. INT 15 - MultiDOS Plus - MAP IRQ
  153.     AH = 17h
  154.     AL = IRQ to map (01h-0Fh)
  155.     BX = offset of task control block (see #0360) to associate with IRQ
  156. Return: AX = status
  157.         0000h successful
  158.         other invalid IRQ
  159. Note:    the EMS map of the specified TCB is associated with the given interrupt
  160. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  161. --------T-1518-------------------------------
  162. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  163.     AH = 18h
  164.     STACK:    WORD    new background/foreground colors
  165.             bits 3-0: foreground
  166.             bits 7-4: background
  167.             bits 15-8: unused
  168. Return: AX = color
  169. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  170. --------T-1518-------------------------------
  171. INT 15 - MultiDOS Plus - UNMAP IRQ
  172.     AH = 18h
  173.     AL = IRQ to unmap (01h-0Fh)
  174. Return: AX = status
  175.         0000h successful
  176.         0001h invalid IRQ
  177. Note:    results are unpredictable if the IRQ has not been mapped
  178. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  179. --------T-1519-------------------------------
  180. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  181.     AH = 19h
  182.     STACK:    WORD    new background/foreground colors
  183.             bits 3-0: foreground
  184.             bits 7-4: background
  185.             bits 15-8: unused
  186. Return: AX = color
  187. SeeAlso: AH=18h"VMiX"
  188. --------T-1519-------------------------------
  189. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  190.     AH = 19h
  191. Return: AX destroyed
  192. Note:    for MultiDOS internal use only
  193. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  194. --------T-151A-------------------------------
  195. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  196.     AH = 1Ah
  197.     STACK:    WORD    interrupt number
  198.         DWORD    pointer to register structure
  199. Return: AX = returned flags
  200. --------T-151A-------------------------------
  201. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  202.     AH = 1Ah
  203.     DS:SI -> 8-byte name
  204. Return: AL = status
  205.         00h successful
  206.         AH = semaphore number (20h-3Fh)
  207.         04h out of string space
  208. Notes:    all eight bytes of the name are significant
  209.     if the name does not already exist, it is added to the name table and
  210.       associated with a free semaphore number
  211.     names cannot be destroyed
  212. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  213. --------T-151B-------------------------------
  214. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  215.     AH = 1Bh
  216.     STACK:    DWORD    source address
  217.         DWORD    destination address
  218.         WORD    number of words to move
  219. Return: nothing
  220. --------T-151B-------------------------------
  221. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  222.     AH = 1Bh
  223.     DS:SI -> 8-byte name
  224. Return: AH = status
  225.         00h successful
  226.         02h invalid semaphore number
  227.         03h caller already owns semaphore
  228.         04h out of string space
  229. Notes:    (see AH=01h"MultiDOS")
  230.     equivalent to AH=1Ah followed by AH=01h
  231. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  232. --------T-151C-------------------------------
  233. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  234.     AH = 1Ch
  235.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  236.         DWORD    pointer to object bitmap
  237.         WORD    object width in pixels
  238.         WORD    object height in pixels
  239. Return: nothing
  240. SeeAlso: AH=1Dh"VMiX"
  241. --------T-151C-------------------------------
  242. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  243.     AH = 1Ch
  244.     DS:SI -> 8-byte name
  245. Return: AH = status
  246.         00h successful
  247.         01h not semaphore owner
  248.         02h invalid semaphore number
  249.         04h out of string space
  250. Notes:    (see AH=02h"MultiDOS")
  251.     equivalent to AH=1Ah followed by AH=02h
  252. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  253. --------T-151D-------------------------------
  254. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  255.     AH = 1Dh
  256. Return: AX = current font number (00h-03h)
  257. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  258. --------T-151D-------------------------------
  259. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  260.     AH = 1Dh
  261.     DS:SI -> 8-byte name
  262. Return: AH = status
  263.         00h semaphore not in use
  264.         01h semaphore owned by another task
  265.         02h invalid semaphore number
  266.         03h caller owns semaphore
  267.         04h out of string space
  268. Notes:    (see AH=10h"MultiDOS")
  269.     equivalent to AH=1Ah followed by AH=10h
  270. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  271. --------T-151E-------------------------------
  272. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  273.     AH = 1Eh
  274.     STACK: WORD new font number (00h-03h)
  275. Return: AX = current font number (00h-03h)
  276. SeeAlso: AH=1Dh"VMiX"
  277. --------T-151E00-----------------------------
  278. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  279.     AX = 1E00h
  280.     DX = event/trigger number (00h-3Fh)
  281. Return: AH = status
  282.         00h successful
  283. SeeAlso: AX=1E01h,AX=1E02h
  284. --------T-151E01-----------------------------
  285. INT 15 - MultiDOS Plus - TRIGGER EVENT
  286.     AX = 1E01h
  287.     DX = event/trigger number (00h-3Fh)
  288. Return: AH = status
  289.         00h successful
  290.         01h invalid event/trigger number
  291. Notes:    schedules any task waiting for event; if no task is waiting, the event
  292.       counter is incremented (and will roll over if it was 65535)
  293.     may be invoked by interrupt handler
  294. SeeAlso: AX=1E00h,AX=1E02h
  295. --------T-151E02-----------------------------
  296. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  297.     AX = 1E02h
  298.     DX = event/trigger number (00h-3Fh)
  299. Return: AH = status
  300.         00h successful
  301.         01h invalid event/trigger number
  302. Note:    if the event counter is zero, the task is suspended until the event is
  303.       triggered with AX=1E01h; else, the counter is decremented and the
  304.       call returns immediately
  305. SeeAlso: AX=1E00h,AX=1E01h
  306. --------T-151E08-----------------------------
  307. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  308.     AX = 1E08h
  309.     DX:BX -> context save handler (see #0362)
  310.     DX:CX -> context restore handler (see #0362)
  311. Return: nothing
  312. Note:    handlers may be removed by setting addresses to 0000h:0000h
  313.  
  314. (Table 0362)
  315. Values MultiDOS Plus context-switch handlers are called with:
  316.     ES:BX -> task's TCB
  317. Return: all registers preserved
  318. --------T-151F-------------------------------
  319. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  320.     AH = 1Fh
  321.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  322.         WORD    bottom right corner of window
  323. Return: AX = status (SYS_OK)
  324. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  325. --------T-151F-------------------------------
  326. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  327.     AH = 1Fh
  328. Return: BX = first segment of conventional memory
  329.     DX = first segment of EMS swap frame into which MultiDOS will load
  330.         programs
  331. --------T-1520-------------------------------
  332. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  333.     AH = 20h
  334. Return: AX = current state
  335.         0000h multitasking enabled
  336.         other TCB of task that disabled multitasking
  337. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  338. --------c-152000-----------------------------
  339. INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  340.     AX = 2000h
  341. Return: nothing
  342. Desc:    stop setting user flag on entry to PRINT critical region
  343. Note:    also supported by PC Network v1.00 RECEIVER.COM
  344. SeeAlso: AX=2001h
  345. --------c-152001-----------------------------
  346. INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
  347.     AX = 2001h
  348.     ES:BX -> byte which is to be incremented while in a DOS call
  349. Return: nothing
  350. Desc:    specify a user flag which PRINT should set to let an interested
  351.       application know it is in a critical region
  352. Note:    also supported by PC Network v1.00 RECEIVER.COM
  353. SeeAlso: AX=2000h
  354. --------O-152010-----------------------------
  355. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  356.     AX = 2010h
  357.     ???
  358. Return: ???
  359. SeeAlso: AX=2011h
  360. --------O-152011-----------------------------
  361. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  362.     AX = 2011h
  363.     ???
  364. Return: ???
  365. SeeAlso: AX=2010h
  366. --------B-1521-------------------------------
  367. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  368.     AH = 21h
  369.     AL = subfunction
  370.         00h read POST log
  371.         01h write POST log
  372.         BH = device ID
  373.         BL = error code
  374. Return: CF set on error
  375.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  376.     if function 00h:
  377.        BX = number of error codes stored
  378.        ES:DI -> error log
  379. Notes:    the log is a series of words, the first byte of which identifies the
  380.       error code and the second the device.
  381.     supported by AMI PCI BIOS
  382. --------B-1522-------------------------------
  383. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  384.     AH = 22h
  385. Return: CF set on error
  386.         AH = status (86h if function not supported)
  387.     CF clear on success
  388.         AH = 00h
  389.         ES:BX -> ROM BASIC
  390. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  391. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  392. --------B-152300-----------------------------
  393. INT 15 U - SYSTEM - PS/1s - GET ??? CMOS DATA
  394.     AX = 2300h
  395. Return: CF clear if successful
  396.         CL = value of CMOS location 2Dh
  397.         CH = value of CMOS location 2Eh
  398.     CF set on error
  399.         AH = error code (80h,86h)
  400. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  401. --------B-152301-----------------------------
  402. INT 15 U - SYSTEM - PS/1s - SET ??? CMOS DATA
  403.     AX = 2301h
  404.     CL = new value for CMOS location 2Dh
  405.     CH = new value for CMOS location 2Eh
  406. Return: CF clear if successful
  407.     CF set on error
  408.         AH = error code (80h,86h)
  409. Note:    sets the contents of CMOS locations 2Dh and 2Eh
  410. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  411. --------B-152302-----------------------------
  412. INT 15 U - SYSTEM - PS/1s - GET ROM STARTUP VIDEO REGISTER TABLES
  413.     AX = 2302h
  414.     BL = data index (00h-0Dh) (see #0363)
  415. Return: ES:BX -> table for register (see #0364,#0365)
  416.     CX = size of table in bytes (may be 0000h)
  417.  
  418. (Table 0363)
  419. Values for PS/1 ROM startup video register tables:
  420.  00h    DAC registers
  421.  01h    ???
  422.  02h    Palette registers
  423.  03h-0Dh ???
  424.  
  425. Format of PS/1 ROM startup DAC register table:
  426. Offset    Size    Description    (Table 0364)
  427.  00h    WORD    number of DAC registers in table
  428.  02h    var    array of 3-byte DAC register values, starting at register 00h
  429. SeeAlso: #0363
  430.  
  431. Format of PS/1 ROM startup Palette register table:
  432. Offset    Size    Description    (Table 0365)
  433.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  434.  10h    BYTE    border color
  435. SeeAlso: #0363,#0017
  436. --------B-152303-----------------------------
  437. INT 15 U - SYSTEM - PS/1s - ???
  438.     AX = 2303h
  439.     BX = ??? ('x')
  440.     DX = 'y' and 'z'
  441.         bits 15-7 = 'y'
  442.         bits 6-3 unused
  443.         bits 2-0 = 'z'
  444.     DI = ??? (0352h)
  445. Return: ???
  446. Note:    performs graphics functions, writes to segment A000h and VGA I/O ports
  447. --------B-152304-----------------------------
  448. INT 15 U - SYSTEM - PS/1s - SYSTEM SETUP
  449.     AX = 2304h
  450.     DX = segment of 32K buffer
  451. Return: CF clear if successful
  452.         AX = 0003h (left over from setting video mode 3)
  453.         BX,CX,DX,BP,DS,ES destroyed
  454.     CF set on error
  455.         AH = error code (80h,86h)
  456. Desc:    run system setup utility, and optionally save any changed settings to
  457.       CMOS RAM
  458. SeeAlso: AX=2301h,AX=2305h
  459. --------B-152305-----------------------------
  460. INT 15 U - SYSTEM - PS/1s - GET PROCESSOR SPEED
  461.     AX = 2305h
  462. Return: CF clear if successful
  463.         AL = processor speed in MHz
  464.     CF set on error
  465.         AL = FFh (speed unknown or >80 MHz)
  466.         AL = error code (80h,86h = unsupported function)
  467. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  468. --------b-152400-----------------------------
  469. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  470.     AX = 2400h
  471. Return: CF clear if successful
  472.         AH = 00h
  473.     CF set on error
  474.         AH = status
  475.         01h keyboard controller is in secure mode
  476.         86h function not supported
  477. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  478. BUG:    AMI BIOS v1.00.03.AV0M never reports an error on failure to disable
  479.       the A20 gate; it simply writes 0 to PORT 0092h
  480. SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h
  481. --------b-152401-----------------------------
  482. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  483.     AX = 2401h
  484. Return: CF clear if successful
  485.         AH = 00h
  486.     CF set on error
  487.         AH = status
  488.         01h keyboard controller is in secure mode
  489.         86h function not supported
  490. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  491. SeeAlso: AX=2400h,AX=2402h,PORT 0092h
  492. --------b-152402-----------------------------
  493. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  494.     AX = 2402h
  495. Return: CF clear if successful
  496.         AH = 00h
  497.         AL = current state (00h disabled, 01h enabled)
  498.         CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M)
  499.         FFFFh if keyboard controller does not become ready within C000h
  500.              read attempts
  501.     CF set on error
  502.         AH = status
  503.         01h keyboard controller is in secure mode
  504.         86h function not supported
  505. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  506. SeeAlso: AX=2400h,AX=2401h
  507. --------b-152403-----------------------------
  508. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  509.     AX = 2403h
  510. Return: CF clear if successful
  511.         AH = 00h
  512.         BX = status of A20 gate support (see #0366)
  513.     CF set on error
  514.         AH = status
  515.         01h keyboard controller is in secure mode
  516.         86h function not supported
  517. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  518. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  519.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  520.       thus causing a random branch on any value of AL greater than 3.
  521. SeeAlso: AX=2402h
  522.  
  523. Bitfields for A20 gate support status:
  524. Bit(s)    Description    (Table 0366)
  525.  0    supported on keyboard controller
  526.  1    supported with bit 1 of I/O port 92h
  527.  15    additional data is available (location not yet defined)
  528. --------T-153000-----------------------------
  529. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  530.     AX = 3000h
  531. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  532.         CX = resident segment
  533. Program: the Object Kernel is a program by M.W. Pieters which is currently
  534.       under development
  535. Note:    Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
  536.       may be checking for a different program's presence
  537. SeeAlso: AX=3001h,AX=3008h
  538. --------T-153001-----------------------------
  539. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  540.     AX = 3001h
  541. Return: AX = FFFFh
  542.     ES:DI -> status block
  543. SeeAlso: AX=3000h,AX=3008h
  544. --------T-153002-----------------------------
  545. INT 15 - Object Kernel for DOS - KILL PROCESS
  546.     AX = 3002h
  547.     (not yet implemented)
  548. SeeAlso: AX=3000h
  549. --------T-153003-----------------------------
  550. INT 15 - Object Kernel for DOS - STOP PROCESS
  551.     AX = 3003h
  552.     (not yet implemented)
  553. SeeAlso: AX=3000h
  554. --------T-153004-----------------------------
  555. INT 15 - Object Kernel for DOS - START PROCESS
  556.     AX = 3004h
  557.     (not yet implemented)
  558. SeeAlso: AX=3000h
  559. --------T-153005-----------------------------
  560. INT 15 - Object Kernel for DOS - RESTART PROCESS
  561.     AX = 3005h
  562.     (not yet implemented)
  563. SeeAlso: AX=3000h
  564. --------T-153006-----------------------------
  565. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  566.     AX = 3006h
  567.     (not yet implemented)
  568. SeeAlso: AX=3000h
  569. --------T-153007-----------------------------
  570. INT 15 - Object Kernel for DOS - LIST PROCESSES
  571.     AX = 3007h
  572.     (not yet implemented)
  573. SeeAlso: AX=3000h
  574. --------T-153008-----------------------------
  575. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  576.     AX = 3008h
  577.     BH = new state (00h disabled, 01h enabled)
  578. Return: AX = FFFFh
  579. SeeAlso: AX=3000h,AX=3009h
  580. --------T-153009-----------------------------
  581. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  582.     AX = 3009h to 30FFh
  583. SeeAlso: AX=3000h
  584. Program: the Object Kernel is a program by M.W. Pieters which is currently
  585.       under development
  586. --------B-1540-------------------------------
  587. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  588.     AH = 40h
  589.     AL = subfunction
  590.         00h get system profile in CX and BX
  591.         01h set system profile from CX and BX
  592.         02h get internal modem profile in BX
  593.         03h set internal modem profile from BX
  594. Return: CF clear if successful
  595.         AH = 00h
  596.     CF set on error
  597.         AH = status (80h = profile execution failed)
  598. --------V-154000-----------------------------
  599. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  600.     AX = 4000h
  601. Return: AX = 4000h
  602.     CL = timeout in minutes, 00h if disabled
  603. SeeAlso: AX=4001h,AX=4600h
  604. --------V-154001-----------------------------
  605. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  606.     AX = 4001h
  607.     CL = timeout in minutes, 00h to disable
  608. Return: AL = status
  609.         00h timeout modified
  610.         01h timeout cannot be modified
  611.         40h timeout cannot be modified
  612.     CL = timeout in minutes, 00h if disabled
  613. SeeAlso: AX=4000h,AX=4601h
  614. --------B-1541-------------------------------
  615. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  616.     AH = 41h
  617.     AL = condition type (see #0367)
  618.     BH = condition compare or mask value
  619.     BL = timeout value times 55 milliseconds
  620.         00h means no timeout
  621.     DX = I/O port address if AL bit 4 set
  622.     ES:DI -> user byte if AL bit 4 clear
  623. Return: after event or timeout occurs
  624. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  625.       this function is supported
  626. SeeAlso: AH=83h,AH=86h,AH=C0h
  627.  
  628. Bitfields for external event wait condition type:
  629. Bit(s)    Description    (Table 0367)
  630.  0-2    condition to wait for
  631.     0 any external event
  632.     1 compare and return if equal
  633.     2 compare and return if not equal
  634.     3 test and return if not zero
  635.     4 test and return if zero
  636.  3    reserved
  637.  4    1=port address, 0=user byte
  638.  5-7    reserved
  639. --------B-1542-------------------------------
  640. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  641.     AH = 42h
  642.     AL = suspend type
  643.         00h to use system profile
  644.         01h to force suspend regardless of system profile
  645. Return: nothing
  646. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  647.       power-up, execution will resume following the instruction calling
  648.       this function
  649. SeeAlso: AH=44h
  650. --------b-154280-----------------------------
  651. INT 15 - Compaq SLT/286 - ENTER STANDBY
  652.     AX = 4280h
  653. Return: AH = 42h
  654.     CF clear if successful
  655.     CF set if unable to enter standby
  656. SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY"
  657. --------B-1543-------------------------------
  658. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  659.     AH = 43h
  660. Return: AL = status bits (see #0368)
  661.  
  662. Bitfields for Convertible system status:
  663. Bit(s)    Description    (Table 0368)
  664.  7    power low
  665.  6    external power in use
  666.  5    standby power lost
  667.  4    power activated by alarm
  668.  3    internal modem powered on
  669.  2    RS232/parallel adapter powered on
  670.  1    reserved
  671.  0    LCD detached
  672. --------B-1544-------------------------------
  673. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  674.     AH = 44h
  675.     AL = new modem power state (00h power off, 01h power on)
  676. Return: nothing
  677. SeeAlso: AH=42h
  678. --------b-1544C0-----------------------------
  679. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  680.     AX = 44C0h
  681.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  682.     ES:SI -> ??? buffer
  683. Return: ES:DI -> old DSP procedure
  684.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  685.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  686. Note:    this function is also supported by XBIOS.COM
  687. SeeAlso: AX=44C9h
  688. --------b-1544C1-----------------------------
  689. INT 15 - Olivetti Quaderno - ???
  690.     AX = 44C1h
  691.     ???
  692. Return: ???
  693. Note:    this function is also supported by XBIOS.COM
  694. SeeAlso: AX=44C9h
  695. --------b-1544C2-----------------------------
  696. INT 15 - Olivetti Quaderno - ???
  697.     AX = 44C2h
  698.     DL = byte to be written to I/O port 350h
  699. Note:    this function is also supported by XBIOS.COM
  700. SeeAlso: AX=44C3h,AX=44C9h
  701. --------b-1544C3-----------------------------
  702. INT 15 - Olivetti Quaderno - GET ???
  703.     AX = 44C3h
  704. Return: DH = bitfields (see #0369)
  705.     DL = value read from I/O port 350h
  706. Note:    this function is also supported by XBIOS.COM
  707. SeeAlso: AX=44C2h,AX=44C9h
  708.  
  709. Bitfields for Olivetti Quaderno ???:
  710. Bit(s)    Description    (Table 0369)
  711.  5-7    5-7 read from I/O port 351h
  712.  2-4    zero
  713.  1-0    "tres complique"
  714. --------b-1544C4-----------------------------
  715. INT 15 - Olivetti Quaderno - ???
  716.     AX = 44C4h and 44C5h
  717.     ???
  718. Return: ???
  719. Note:    this function is also supported by XBIOS.COM
  720. SeeAlso: AX=44C9h
  721. --------b-1544C6-----------------------------
  722. INT 15 - Olivetti Quaderno - READ LCD
  723.     AX = 44C6h
  724. Return: DX = FFFFh clock is displayed on LCD display
  725.     DX = other: hex number displayed in first four positions of display
  726.     BH = left alphanumeric character on display (see #0370)
  727.     BL = right alphanumeric character on display (see #0370)
  728.     CL = colon flags (see #0371)
  729. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  730.       is an alphanumeric character
  731.     this function is also supported by XBIOS.COM
  732. SeeAlso: AX=44C7h,AX=44C9h
  733.  
  734. (Table 0370)
  735. Values for Olivetti Quaderno LCD alphanumeric characters:
  736.  00h-0Fh hex digit
  737.  2Bh    "+"
  738.  2Dh    "-"
  739.  30h-39h "0" to "9"
  740.  41h-5Ah "A" to "Z"
  741.  61h-6Ah "a" to "z"
  742.  else    blank
  743.  
  744. Bitfields for Olivetti Quaderno LCD colon flags:
  745. Bit(s)    Description    (Table 0371)
  746.  0    left colon on
  747.  1    right colon on
  748.  2-7    unused
  749. --------b-1544C7-----------------------------
  750. INT 15 - Olivetti Quaderno - WRITE LCD
  751.     AX = 44C7h
  752.     DX = hex display
  753.         FFFFh display clock and "HI", "Md", or "Lo"
  754.         BH,BL,CL unused
  755.         other: display specified hex number in first four positions
  756.         BH = left alphanumeric character on display (see #0370)
  757.         BL = right alphanumeric character on display (see #0370)
  758.         CL = colon flags (see #0371)
  759. Return: nothing
  760. Note:    this function is also supported by XBIOS.COM
  761. SeeAlso: AX=44C6h
  762. --------b-1544C8-----------------------------
  763. INT 15 - Olivetti Quaderno - ???
  764.     AX = 44C8h
  765.     CL = ??? (00h,02h,21h)
  766.     CH = ???
  767.     ???
  768. Return: ???
  769. Note:    this function is also supported by XBIOS.COM
  770. SeeAlso: AX=44C9h
  771. --------b-1544C9-----------------------------
  772. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  773.     AX = 44C9h
  774. Return: AL = major version
  775.     AH = minor version
  776. Note:    this function is also supported by XBIOS.COM
  777. --------B-1544F1-----------------------------
  778. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  779.     AX = 44F1h
  780.     DS:DX -> byte with 00h ???
  781. Return: ???
  782. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  783.       between USER and SUPERVISOR security level
  784. SeeAlso: AX=44F2h,AX=44F3h
  785. --------B-1544F2BX0604-----------------------
  786. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  787.     AX = 44F2h
  788.     BX = 0604h ???
  789. Return: CF = ???
  790.     AH = ???
  791.     DX = ???
  792. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  793.       between USER and SUPERVISOR security level
  794. SeeAlso: AX=44F1h,AX=44F3h
  795. --------B-1544F3-----------------------------
  796. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  797.     AX = 44F3h
  798.     DS:DX -> byte with 00h or 01h ???
  799. Return: DS:DX -> changed ???
  800. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  801.       between USER and SUPERVISOR security level
  802. SeeAlso: AX=44F1h,AX=44F2h
  803. --------b-1545-------------------------------
  804. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
  805.     AH = 45h
  806.     AL = new display control status
  807.         bit 0: DISPCTL flag +C instead of -C
  808.         bit 1: DISPCTL flag +K instead of -K
  809. SeeAlso: AH=46h"HP",AH=47h"HP"
  810. --------b-1546-------------------------------
  811. INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
  812.     AH = 46h
  813.     BX = timeout value in ticks
  814.         0000h inhibit auto power off
  815. Note:    the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
  816. SeeAlso: AH=45h"HP",AH=47h"HP"
  817. --------b-154600-----------------------------
  818. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  819.     AX = 4600h
  820. Return: AH = modem configuration information (see #0372)
  821.     AL = power conservation status information (see #0373)
  822.     BH = default system inactivity timeout (1-21 minutes)
  823.     BL = current system inactivity timeout (1-21 minutes)
  824.     CH = default video display inactivity timeout (1-63 minutes)
  825.     CL = current video display inactivity timeout (1-63 minutes)
  826.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  827.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  828. SeeAlso: AX=4280h,AX=4601h,INT 77
  829.  
  830. Bitfields for Compaq SLT/286 modem configuration information:
  831. Bit(s)    Description    (Table 0372)
  832.  0    powerup state (0 off, 1 on)
  833.  1    modem installed
  834.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  835.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  836.  4    modem state (0 not assigned, 1 assigned)
  837.  5    modem is on
  838.  
  839. Bitfields for Compaq SLT/286 power conservation status:
  840. Bit(s)    Description    (Table 0373)
  841.  0    power source (0 internal, 1 external)
  842.  1-2    low battery state
  843.     00 no low battery condition
  844.     01 low battery 1
  845.     10 reserved
  846.     11 low battery 2
  847.  3-4    power conservation mode
  848.     00 automatic, 01 on, 10 off, 11 reserved
  849. --------b-154601-----------------------------
  850. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  851.     AX = 4601h
  852.     BL = system inactivity timeout (1-21 minutes)
  853.         FFh do not change
  854.     CL = video display inactivity timeout (1-63 minutes)
  855.         FFh do not change
  856.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  857.         FFh do not change
  858.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  859. Return: CF clear if successful
  860.         AH = 00h
  861.         BL = current system inactivity timeout (1-21 minutes)
  862.         CL = current video display inactivity timeout (1-63 minutes)
  863.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  864.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  865.     CF set on error
  866.         AH = error code
  867.         01h input is out of range
  868.         02h no modem present
  869. SeeAlso: AX=4600h,INT 77
  870. --------b-154604-----------------------------
  871. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  872.     AX = 4604h
  873. Return: CF clear if successful
  874.         AL = byte read from I/O port 03F8h
  875.     CF set on error (not supported)
  876.         AH = 86h (unsupported function)
  877. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  878. --------b-154605-----------------------------
  879. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  880.     AX = 4605h
  881. Return: CF clear if successful
  882.     CF set on error (not supported)
  883.         AH = 86h (unsupported function)
  884. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  885.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  886.       LTE Lite 386 ROM
  887. --------b-1547-------------------------------
  888. INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
  889.     AH = 47h
  890.     AL = subfunction
  891.        00h set contrast
  892.         BL = new contrast
  893.             (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
  894.        other get current contrast
  895. Return: AL = contrast (00h-0Fh, 0Fh is darkest)
  896. Note:    may be for backward compatibility with HP95LX, as INT 15/AH=62h does
  897.       substantially the same thing as this function
  898. SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
  899. --------b-1548-------------------------------
  900. INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
  901.     AH = 48h
  902.     AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
  903. SeeAlso: AH=47h"HP"
  904. --------S-1549-------------------------------
  905. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
  906.     AH = 49h
  907.     AL = serial interface
  908.         00h wired (COM1)
  909.         01h infrared
  910. Note:    interface should only be changed in deactivated state (see AH=4Ah)
  911. SeeAlso: AH=4Ah"HP"
  912. --------J-154900-----------------------------
  913. INT 15 - Far East MS-DOS - GET BIOS TYPE
  914.     AX = 4900h
  915. Return: CF clear if successful
  916.         AH = 00h
  917.         BL = BIOS mode
  918.         00h DOS/V
  919.         01h standard DBCS DOS (hardware DBCS support)
  920.     CF set on error
  921.         AH = 86h (function not supported)
  922. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  923. SeeAlso: AH=50h,INT 21/AH=30h
  924. --------S-154A-------------------------------
  925. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
  926.     AH = 4Ah
  927.     AL = control
  928.         00h deactivate
  929.         01h activate
  930. Note:    interface selected with AH=49h will be (de)activated
  931. SeeAlso: AH=49h"HP",AH=4Bh"HP"
  932. --------b-154B-------------------------------
  933. INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
  934.     AH = 4Bh
  935. Desc:    adjust system time based on real-time clock
  936. SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
  937. --------b-154DD4-----------------------------
  938. INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
  939.     AX = 4DD4h
  940. Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
  941.         CX = model
  942.         0101h HP 95LX
  943.         0102h HP 100LX/200LX
  944.         DH = ???
  945.         02h HP 200LX 2MB BIOS 1.01 A D german
  946.         DL = ???
  947.         00h HP 95LX
  948.         01h HP 200LX 2MB BIOS 1.01 A D german
  949. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  950. SeeAlso: INT 61"HP 95LX"
  951. --------b-154E-------------------------------
  952. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  953.     AH = 4Eh
  954.     AL = light sleep
  955.         00h disabled
  956.         01h enabled
  957. Note:    when light sleep is disabled, the system will continue running at full
  958.       speed; when enabled, it may automatically slow to conserve batteries
  959. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  960. --------B-154F-------------------------------
  961. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  962.     AH = 4Fh
  963.     AL = hardware scan code (see #0005)
  964.     CF set
  965. Return: CF set to continue processing scan code
  966.        AL = possibly-altered hardware scan code (see #0005)
  967.     CF clear
  968.        scan code should be ignored
  969. Notes:    called by INT 09 handler to translate scan codes; the INT 09 code does
  970.       not examine the scan code it reads from the keyboard until after
  971.       this function returns.  This permits software to rearrange the
  972.       keyboard; for example, swapping the CapsLock and Control keys, or
  973.       turning the right Shift key into Enter.
  974.     DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
  975.       pressed and a SmartDrive v4-compatible cache is installed which has
  976.       dirty cache buffers; some other disk caches such as HyperDisk
  977.       operate similarly in order to prevent loss of cached data which has
  978.       not yet been written to disk
  979. SeeAlso: INT 09,INT 15/AH=C0h
  980. --------J-1550-------------------------------
  981. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  982.     AH = 50h
  983.     AL = which function address to retrieve
  984.         00h "read font" function
  985.         01h "write font" function
  986.     BL = 00h
  987.     BH = character size (00h single-byte, 01h double-byte)
  988.     DH = width of character cell
  989.     DL = height of character cell
  990.     BP = code page (see #0374)
  991. Return: CF clear if successful
  992.         AH = 00h
  993.         ES:BX -> requested function's address
  994.     CF set on error
  995.         AH = error code (see #0375)
  996. SeeAlso: AH=49h
  997.  
  998. (Table 0374)
  999. Values for DOS/V code page:
  1000.  0    default
  1001.  437    US English
  1002.  932    Japanese
  1003.  934    Korea
  1004.  936    China
  1005.  938    Taiwan
  1006. SeeAlso: #1099
  1007.  
  1008. (Table 0375)
  1009. Values for DOS/V error code:
  1010.  01h    invalid font type in BH
  1011.  02h    BL not zero
  1012.  03h    invalid font size
  1013.  04h    invalid code page
  1014.  80h    unsupported function (PC)
  1015.  86h    unsupported function (XT)
  1016. SeeAlso: #1020
  1017. --------T-1550-------------------------------
  1018. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  1019.     AH = 50h
  1020.     BX = segment of page directory table
  1021.     CX = page number of page table
  1022. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  1023. --------T-1551-------------------------------
  1024. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  1025.     AH = 51h
  1026.     STACK:    DWORD    selector:offset of function
  1027. Return: registers as returned by function
  1028. Note:    executes function with privilege level 0 (highest privilege)
  1029. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  1030. --------B-155101-----------------------------
  1031. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  1032.     AX = 5101h
  1033. Return: CF set if successful
  1034.         AH = 00h
  1035.         AL = current configuration number
  1036.         00h system unit only
  1037.         FFh configuration not recognized
  1038.         BX = status flag
  1039.         bits 0-14: reserved
  1040.         bit 15: additional data is available (location TBD)
  1041.     CF clear on error
  1042.         AH = status
  1043.         01h expansion unit is not present
  1044.         86h function not supported
  1045. Note:    CF convention is the reverse of the standard convention for this
  1046.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  1047. --------T-1552-------------------------------
  1048. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  1049.     AH = 52h
  1050. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  1051. --------d-1552-------------------------------
  1052. INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
  1053.     AH = 52h
  1054.     DL = drive number
  1055. Return: CF clear if OK to eject media
  1056.         AH = 00h
  1057.     CF set if ejection disallowed
  1058.         AH = error code (B1h,B3h) (see #0144)
  1059. Note:    called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
  1060.       request is made
  1061. SeeAlso: INT 13/AH=46h"INT 13 Extensions"
  1062. --------p-155300-----------------------------
  1063. INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
  1064.     AX = 5300h
  1065.     BX = device ID of system BIOS (0000h)
  1066. Return: CF clear if successful
  1067.         AH = major version (BCD)
  1068.         AL = minor version (BCD)
  1069.         BX = 504Dh ("PM")
  1070.         CX = flags (see #0376)
  1071.     CF set on error
  1072.         AH = error code (06h,09h,86h) (see #0377)
  1073. BUG:    early versions of the Award Modular BIOS with built-in APM support
  1074.       reportedly do not set BX on return
  1075.  
  1076. Bitfields for APM flags:
  1077. Bit(s)    Description    (Table 0376)
  1078.  0    16-bit protected mode interface supported
  1079.  1    32-bit protected mode interface supported
  1080.  2    CPU idle call reduces processor speed
  1081.  3    BIOS power management disabled
  1082.  4    BIOS power management disengaged (APM v1.1)
  1083.  5-7    reserved
  1084.  
  1085. (Table 0377)
  1086. Values for APM error code:
  1087.  01h    power management functionality disabled
  1088.  02h    interface connection already in effect
  1089.  03h    interface not connected
  1090.  04h    real-mode interface not connected
  1091.  05h    16-bit protected-mode interface already connected
  1092.  06h    16-bit protected-mode interface not supported
  1093.  07h    32-bit protected-mode interface already connected
  1094.  08h    32-bit protected-mode interface not supported
  1095.  09h    unrecognized device ID
  1096.  0Ah    invalid parameter value in CX
  1097.  0Bh    (APM v1.1) interface not engaged
  1098.  0Ch    (APM v1.2) function not supported
  1099.  0Dh    (APM v1.2) Resume Timer disabled
  1100.  0Eh-1Fh reserved for other interface and general errors
  1101.  20h-3Fh reserved for CPU errors
  1102.  40h-5Fh reserved for device errors
  1103.  60h    can't enter requested state
  1104.  61h-7Fh reserved for other system errors
  1105.  80h    no power management events pending
  1106.  81h-85h reserved for other power management event errors
  1107.  86h    APM not present
  1108.  87h-9Fh reserved for other power management event errors
  1109.  A0h-FEh reserved
  1110.  FFh    undefined
  1111. --------p-155301-----------------------------
  1112. INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
  1113.     AX = 5301h
  1114.     BX = device ID of system BIOS (0000h)
  1115. Return: CF clear if successful
  1116.     CF set on error
  1117.         AH = error code (02h,05h,07h,09h) (see #0377)
  1118. Note:    on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  1119.       compatibility mode until it is informed that the user supports a
  1120.       newer version of APM (see AX=530Eh)
  1121. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  1122. --------p-155302-----------------------------
  1123. INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
  1124.     AX = 5302h
  1125.     BX = device ID of system BIOS (0000h)
  1126. Return: CF clear if successful
  1127.         AX = real-mode segment base address of protected-mode 16-bit code
  1128.         segment
  1129.         BX = offset of entry point
  1130.         CX = real-mode segment base address of protected-mode 16-bit data
  1131.         segment
  1132.         ---APM v1.1---
  1133.         SI = APM BIOS code segment length
  1134.         DI = APM BIOS data segment length
  1135.     CF set on error
  1136.         AH = error code (02h,05h,06h,07h,09h) (see #0377)
  1137. Notes:    the caller must initialize two consecutive descriptors with the
  1138.       returned segment base addresses; these descriptors must be valid
  1139.       whenever the protected-mode interface is called, and will have
  1140.       their limits arbitrarily set to 64K.
  1141.     the protected mode interface is invoked by making a far call with the
  1142.       same register values as for INT 15; it must be invoked while CPL=0,
  1143.       the code segment descriptor must have a DPL of 0, the stack must be
  1144.       in a 16-bit segment and have enough room for BIOS use and possible
  1145.       interrupts, and the current I/O permission bit map must allow access
  1146.       to the I/O ports used for power management.
  1147.     functions 00h-03h are not available from protected mode
  1148.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  1149.       compatibility mode until it is informed that the user supports a
  1150.       newer version of APM (see AX=530Eh)
  1151. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  1152. --------p-155303-----------------------------
  1153. INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
  1154.     AX = 5303h
  1155.     BX = device ID of system BIOS (0000h)
  1156. Return: CF clear if successful
  1157.         AX = real-mode segment base address of protected-mode 32-bit code
  1158.         segment
  1159.         EBX = offset of entry point
  1160.         CX = real-mode segment base address of protected-mode 16-bit code
  1161.         segment
  1162.         DX = real-mode segment base address of protected-mode 16-bit data
  1163.         segment
  1164.         ---APM v1.1---
  1165.         SI = APM BIOS code segment length
  1166.         DI = APM BIOS data segment length
  1167.     CF set on error
  1168.         AH = error code (02h,05h,07h,08h,09h) (see #0377)
  1169. Notes:    the caller must initialize three consecutive descriptors with the
  1170.       returned segment base addresses for 32-bit code, 16-bit code, and
  1171.       16-bit data, respectively; these descriptors must be valid whenever
  1172.       the protected-mode interface is called, and will have their limits
  1173.       arbitrarily set to 64K.
  1174.     the protected mode interface is invoked by making a far call to the
  1175.       32-bit code segment with the same register values as for INT 15; it
  1176.       must be invoked while CPL=0, the code segment descriptor must have a
  1177.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  1178.       for BIOS use and possible interrupts, and the current I/O permission
  1179.       bit map must allow access to the I/O ports used for power management.
  1180.     functions 00h-03h are not available from protected mode
  1181.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  1182.       compatibility mode until it is informed that the user supports a
  1183.       newer version of APM (see AX=530Eh)
  1184. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  1185. --------p-155304-----------------------------
  1186. INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
  1187.     AX = 5304h
  1188.     BX = device ID of system BIOS (0000h)
  1189. Return: CF clear if successful
  1190.     CF set on error
  1191.         AH = error code (03h,09h) (see #0377)
  1192. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  1193. --------p-155305-----------------------------
  1194. INT 15 - Advanced Power Management v1.0+ - CPU IDLE
  1195.     AX = 5305h
  1196. Return: CF clear if successful (after system leaves idle state)
  1197.     CF set on error
  1198.         AH = error code (03h,0Bh) (see #0377)
  1199. Notes:    call when the system is idle and should be suspended until the next
  1200.       system event or interrupt
  1201.     should not be called from within a hardware interrupt handler to avoid
  1202.       reentrance problems
  1203.     if an interrupt causes the system to resume normal processing, the
  1204.       interrupt may or may not have been handled when the BIOS returns
  1205.       from this call; thus, the caller should allow interrupts on return
  1206.     interrupt handlers may not retain control if the BIOS allows
  1207.       interrupts while in idle mode even if they are able to determine
  1208.       that they were called from idle mode
  1209.     the caller should issue this call continuously in a loop until it needs
  1210.       to perform some processing of its own
  1211. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  1212. --------p-155306-----------------------------
  1213. INT 15 - Advanced Power Management v1.0+ - CPU BUSY
  1214.     AX = 5306h
  1215. Return: CF clear if successful
  1216.     CF set on error
  1217.         AH = error code (03h,0Bh) (see #0377)
  1218. Notes:    called to ensure that the system runs at full speed even on systems
  1219.       where the BIOS is unable to recognize increased activity (especially
  1220.       if interrupts are hooked by other programs and not chained to the
  1221.       BIOS)
  1222.     this call may be made even when the system is already running at full
  1223.       speed, but it will create unnecessary overhead
  1224.     should not be called from within a hardware interrupt handler to avoid
  1225.       reentrance problems
  1226. SeeAlso: AX=5305h
  1227. --------p-155307-----------------------------
  1228. INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
  1229.     AX = 5307h
  1230.     BX = device ID (see #0378)
  1231.     CX = system state ID (see #0379)
  1232. Return: CF clear if successful
  1233.     CF set on error
  1234.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0377)
  1235. Note:    should not be called from within a hardware interrupt handler to avoid
  1236.       reentrance problems
  1237. SeeAlso: AX=530Ch
  1238.  
  1239. (Table 0378)
  1240. Values for APM device IDs:
  1241.  0000h    system BIOS
  1242.  0001h    all devices for which the system BIOS manages power
  1243.  01xxh    display (01FFh for all attached display devices)
  1244.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  1245.  03xxh    parallel ports (03FFh for all attached parallel ports)
  1246.  04xxh    serial ports (04FFh for all attached serial ports)
  1247. ---APM v1.1+ ---
  1248.  05xxh    network adapters (05FFh for all attached network adapters)
  1249.  06xxh    PCMCIA sockets (06FFh for all)
  1250.  0700h-7FFFh reserved
  1251.  80xxh    system battery devices (APM v1.2)
  1252.  8100h-DFFFh reserved
  1253.  Exxxh    OEM-defined power device IDs
  1254.  F000h-FFFFh reserved
  1255.  
  1256. (Table 0379)
  1257. Values for system state ID:
  1258.  0000h    ready (not supported for device ID 0001h)
  1259.  0001h    stand-by
  1260.  0002h    suspend
  1261.  0003h    off (not supported for device ID 0001h)
  1262. ---APM v1.1---
  1263.  0004h    last request processing notification (only for device ID 0001h)
  1264.  0005h    last request rejected (only for device ID 0001h)
  1265.  0006h-001Fh reserved system states
  1266.  0020h-003Fh OEM-defined system states
  1267.  0040h-007Fh OEM-defined device states
  1268.  0080h-FFFFh reserved device states
  1269. --------p-155307CX0001-----------------------
  1270. INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
  1271.     AX = 5307h
  1272.     CX = 0001h
  1273.     BX = 0001h (device ID for all power-managed devices)
  1274. Return: CF clear
  1275. Notes:    puts the entire system into stand-by mode; normally called in response
  1276.       to a System Stand-by Request notification after any necessary
  1277.       processing, but may also be invoked at the caller's discretion
  1278.     should not be called from within a hardware interrupt handler to avoid
  1279.       reentrance problems
  1280.     the stand-by state is typically exited on an interrupt
  1281. SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=530Bh
  1282. --------p-155307CX0002-----------------------
  1283. INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
  1284.     AX = 5307h
  1285.     CX = 0002h
  1286.     BX = 0001h (device ID for all power-managed devices)
  1287. Return: after system is resumed
  1288.     CF clear
  1289. Notes:    puts the entire system into a low-power suspended state; normally
  1290.       called in response to a Suspend System Request notification after
  1291.       any necessary processing, but may also be invoked at the caller's
  1292.       discretion
  1293.     should not be called from within a hardware interrupt handler to avoid
  1294.       reentrance problems
  1295.     the caller may need to update its date and time values because the
  1296.       system could have been suspended for a long period of time
  1297. SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
  1298. --------p-155308-----------------------------
  1299. INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
  1300.     AX = 5308h
  1301.     BX = device ID for all devices power-managed by APM
  1302.         0001h (APM v1.1+)
  1303.         FFFFh (APM v1.0)
  1304.     CX = new state
  1305.         0000h disabled
  1306.         0001h enabled
  1307. Return: CF clear if successful
  1308.     CF set on error
  1309.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0377)
  1310. Notes:    when power management is disabled, the system BIOS will not
  1311.       automatically power down devices, enter stand-by or suspended mode,
  1312.       or perform any power-saving actions in response to AX=5305h calls
  1313.     should not be called from within a hardware interrupt handler to avoid
  1314.       reentrance problems
  1315.     the APM BIOS should never be both disabled and disengaged at the same
  1316.       time
  1317. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  1318. --------p-155309-----------------------------
  1319. INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
  1320.     AX = 5309h
  1321.     BX = device ID for all devices power-managed by APM
  1322.         0001h (APM v1.1)
  1323.         FFFFh (APM v1.0)
  1324. Return: CF clear if successful
  1325.     CF set on error
  1326.         AH = error code (03h,09h,0Bh) (see #0377)
  1327. Note:    should not be called from within a hardware interrupt handler to avoid
  1328.       reentrance problems
  1329. SeeAlso: AX=5308h
  1330. --------p-15530A-----------------------------
  1331. INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
  1332.     AX = 530Ah
  1333.     BX = device ID
  1334.         0001h all devices power-managed by APM
  1335.         80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
  1336. Return: CF clear if successful
  1337.         BH = AC line status
  1338.         00h off-line
  1339.         01h on-line
  1340.         02h on backup power (APM v1.1)
  1341.         FFh unknown
  1342.         other reserved
  1343.         BL = battery status (see #0380)
  1344.         CH = battery flag (APM v1.1+) (see #0381)
  1345.         CL = remaining battery life, percentage
  1346.         00h-64h (0-100) percentage of full charge
  1347.         FFh unknown
  1348.         DX = remaining battery life, time (APM v1.1) (see #0382)
  1349.         ---if specific battery unit specified---
  1350.         SI = number of battery units currently installed
  1351.     CF set on error
  1352.         AH = error code (09h,0Ah) (see #0377)
  1353. Notes:    should not be called from within a hardware interrupt handler to avoid
  1354.       reentrance problems
  1355.     supported in real mode (INT 15) and both 16-bit and 32-bit protected
  1356.       mode
  1357.  
  1358. (Table 0380)
  1359. Values for APM v1.0+ battery status:
  1360.  00h    high
  1361.  01h    low
  1362.  02h    critical
  1363.  03h    charging
  1364.  FFh    unknown
  1365.  other    reserved
  1366. SeeAlso: #0381,#0382
  1367.  
  1368. Bitfields for APM v1.1+ battery flag:
  1369. Bit(s)    Description    (Table 0381)
  1370.  0    high
  1371.  1    low
  1372.  2    critical
  1373.  3    charging
  1374.  4    selected battery not present (APM v1.2)
  1375.  5-6    reserved (0)
  1376.  7    no system battery
  1377. Note:    all bits set (FFh) if unknown
  1378. SeeAlso: #0380,#0382
  1379.  
  1380. Bitfields for APM v1.1+ remaining battery life:
  1381. Bit(s)    Description    (Table 0382)
  1382.  15    time units: 0=seconds, 1=minutes
  1383.  14-0    battery life in minutes or seconds
  1384. Note:    all bits set (FFFFh) if unknown
  1385. SeeAlso: #0380,#0381
  1386. --------p-15530B-----------------------------
  1387. INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
  1388.     AX = 530Bh
  1389. Return: CF clear if successful
  1390.         BX = event code (see #0383)
  1391.         CX = event information (APM v1.2) if BX=0003h or BX=0004h
  1392.         bit 0: PCMCIA socket was powered down in suspend state
  1393.     CF set on error
  1394.         AH = error code (03h,0Bh,80h) (see #0377)
  1395. Notes:    although power management events are often asynchronous, notification
  1396.       will not be made until polled via this call to permit software to
  1397.       only receive event notification when it is prepared to process
  1398.       power management events; since these events are not very time-
  1399.       critical, it should be sufficient to poll once or twice per second
  1400.     the critical resume notification is made after the system resumes
  1401.       from an emergency suspension; normally, the system BIOS only notifies
  1402.       its partner that it wishes to suspend and relies on the partner to
  1403.       actually request the suspension, but no notification is made on an
  1404.       emergency suspension
  1405.     should not be called from within a hardware interrupt handler to avoid
  1406.       reentrance problems
  1407. SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
  1408.  
  1409. (Table 0383)
  1410. Values for APM event code:
  1411.  0001h    system stand-by request
  1412.  0002h    system suspend request
  1413.  0003h    normal resume system notification
  1414.  0004h    critical resume system notification
  1415.  0005h    battery low notification
  1416. ---APM v1.1---
  1417.  0006h    power status change notification
  1418.  0007h    update time notification
  1419.  0008h    critical system suspend notification
  1420.  0009h    user system standby request notification
  1421.  000Ah    user system suspend request notification
  1422.  000Bh    system standby resume notification
  1423. ---APM v1.2---
  1424.  000Ch    capabilities change notification (see AX=5310h)
  1425. ------
  1426.  000Dh-00FFh reserved system events
  1427.  01xxh    reserved device events
  1428.  02xxh    OEM-defined APM events
  1429.  0300h-FFFFh reserved
  1430. --------p-15530C-----------------------------
  1431. INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
  1432.     AX = 530Ch
  1433.     BX = device ID (see #0378)
  1434. Return: CF clear if successful
  1435.         CX = system state ID (see #0379)
  1436.     CF set on error
  1437.         AH = error code (01h,09h) (see #0377)
  1438. SeeAlso: AX=5307h
  1439. --------p-15530D-----------------------------
  1440. INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
  1441.     AX = 530Dh
  1442.     BX = device ID (see #0378)
  1443.     CX = function
  1444.         0000h disable power management
  1445.         0001h enable power management
  1446. Return: CF clear if successful
  1447.     CF set on error
  1448.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0377)
  1449. Desc:    specify whether automatic power management should be active for a
  1450.       given device
  1451. SeeAlso: AX=5308h,AX=530Fh
  1452. --------p-15530E-----------------------------
  1453. INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
  1454.     AX = 530Eh
  1455.     BX = device ID of system BIOS (0000h)
  1456.     CH = APM driver major version (BCD)
  1457.     CL = APM driver minor version (BCD) (02h for APM v1.2)
  1458. Return: CF clear if successful
  1459.         AH = APM connection major version (BCD)
  1460.         AL = APM connection minor version (BCD)
  1461.     CF set on error
  1462.         AH = error code (03h,09h,0Bh) (see #0377)
  1463. SeeAlso: AX=5300h,AX=5303h
  1464. --------p-15530F-----------------------------
  1465. INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
  1466.     AX = 530Fh
  1467.     BX = device ID (see #0378)
  1468.     CX = function
  1469.         0000h disengage power management
  1470.         0001h engage power management
  1471. Return: CF clear if successful
  1472.     CF set on error
  1473.         AH = error code (01h,09h) (see #0377)
  1474. Notes:    unlike AX=5308h, this call does not affect the functioning of the APM
  1475.       BIOS
  1476.     when cooperative power management is disengaged, the APM BIOS performs
  1477.       automatic power management of the system or device
  1478. SeeAlso: AX=5308h,AX=530Dh
  1479. --------p-155310-----------------------------
  1480. INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
  1481.     AX = 5310h
  1482.     BX = device ID (see #0378)
  1483.         0000h (APM BIOS)
  1484.         other reserved
  1485. Return: CF clear if successful
  1486.         BL = number of battery units supported (00h if no system batteries)
  1487.         CX = capabilities flags (see #0384)
  1488.     CF set on error
  1489.         AH = error code (01h,09h,86h) (see #0377)
  1490. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1491.       32-bit protected mode interfaces; it does not require that a
  1492.       connection be established prior to use
  1493.     this function will return the capabilities currently in effect, not
  1494.       any new settings which have been made but do not take effect until
  1495.       a system restart
  1496. SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
  1497.  
  1498. Bitfields for APM v1.2 capabilities flags:
  1499. Bit(s)    Description    (Table 0384)
  1500.  0    can enter global standby state
  1501.  1    can enter global suspend state
  1502.  2    resume timer will wake up system from standby mode
  1503.  3    resume timer will wake up system from suspend mode
  1504.  4    Resume on Ring Indicator will wake up system from standby mode
  1505.  5    Resume on Ring Indicator will wake up system from suspend mode
  1506.  6    PCMCIA Ring Indicator will wake up system from standby mode
  1507.  7    PCMCIA Ring Indicator will wake up system from suspend mode
  1508. --------p-155311-----------------------------
  1509. INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
  1510.     AX = 5311h
  1511.     BX = device ID (see #0378)
  1512.         0000h (APM BIOS)
  1513.         other reserved
  1514.     CL = function
  1515.         00h disable Resume Timer
  1516.         01h get Resume Timer
  1517.         02h set Resume Timer
  1518.         CH = resume time, seconds (BCD)
  1519.         DL = resume time, minutes (BCD)
  1520.         DH = resume time, hours (BCD)
  1521.         SI = resume date (BCD), high byte = month, low byte = day
  1522.         DI = resume date, year (BCD)
  1523. Return: CF clear if successful
  1524.         ---if getting timer---
  1525.         CH = resume time, seconds (BCD)
  1526.         DL = resume time, minutes (BCD)
  1527.         DH = resume time, hours (BCD)
  1528.         SI = resume date (BCD), high byte = month, low byte = day
  1529.         DI = resume date, year (BCD)
  1530.     CF set on error
  1531.         AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #0377)
  1532. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1533.       32-bit protected mode interfaces
  1534. SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
  1535. --------p-155312-----------------------------
  1536. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
  1537.     AX = 5312h
  1538.     BX = device ID (see #0378)
  1539.         0000h (APM BIOS)
  1540.         other reserved
  1541.     CL = function
  1542.         00h disable Resume on Ring Indicator
  1543.         01h enable Resume on Ring Indicator
  1544.         02h get Resume on Ring Indicator status
  1545. Return: CF clear if successful
  1546.         CX = resume status (0000h disabled, 0001h enabled)
  1547.     CF set on error
  1548.         AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #0377)
  1549. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1550.       32-bit protected mode interfaces
  1551. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
  1552. --------p-155313-----------------------------
  1553. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
  1554.     AX = 5313h
  1555.     BX = device ID (see #0378)
  1556.         0000h (APM BIOS)
  1557.         other reserved
  1558.     CL = function
  1559.         00h disable timer-based requests
  1560.         01h enable timer-based requests
  1561.         02h get timer-based requests status
  1562. Return: CF clear if successful
  1563.         CX = timer-based requests status (0000h disabled, 0001h enabled)
  1564.     CF set on error
  1565.         AH = error code (03h,09h,0Ah,0Bh,86h) (see #0377)
  1566. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1567.       32-bit protected mode interfaces
  1568. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
  1569. --------p-155380BH00-------------------------
  1570. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  1571.     AX = 5380h
  1572.     BH = 00h
  1573. Return: CF clear if successful
  1574.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  1575.         BL = sustdbymode (see #0385)
  1576. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  1577.  
  1578. Bitfields for APM SL sustdbymode:
  1579. Bit(s)    Description    (Table 0385)
  1580.  2    ???
  1581.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  1582.  0    ???
  1583. --------p-155380BH01-------------------------
  1584. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  1585.     AX = 5380h
  1586.     BH = 01h
  1587.     BL = sustdbymode (see #0385)
  1588. Return: CF clear if successful
  1589. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  1590. --------p-155380BH02-------------------------
  1591. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  1592.     AX = 5380h
  1593.     BH = 02h
  1594. Return: CF clear if successful
  1595.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1596. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  1597. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  1598. --------p-155380BH03-------------------------
  1599. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  1600.     AX = 5380h
  1601.     BH = 03h
  1602.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1603. Return: CF clear if successful
  1604. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  1605. Note:    the maximum timer count is 268431 seconds
  1606. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  1607. --------p-155380BH04-------------------------
  1608. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  1609.     AX = 5380h
  1610.     BH = 04h
  1611. Return: CF clear if successful
  1612.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1613. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  1614. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  1615. --------p-155380BH05-------------------------
  1616. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  1617.     AX = 5380h
  1618.     BH = 05h
  1619.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1620. Return: CF clear if successful
  1621. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  1622. Note:    the maximum timer count is 134213 seconds
  1623. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  1624. --------p-155380BH06-------------------------
  1625. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  1626.     AX = 5380h
  1627.     BH = 06h
  1628. Return: CF clear if successful
  1629.         BL = resume condition (see #0386)
  1630. Desc:    reads the value of 82360SL RESUME_MASK register
  1631. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  1632.  
  1633. Bitfields for APM SL resume condition:
  1634. Bit(s)    Description    (Table 0386)
  1635.  7-2    reserved (0)
  1636.  1    alarm enabled (resume on CMOS alarm)
  1637.  0    ring enabled
  1638. --------p-155380BH07-------------------------
  1639. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  1640.     AX = 5380h
  1641.     BH = 07h
  1642.     BL = resume condition (see #0386)
  1643. Return: CF clear if successful
  1644. Desc:    sets the value of 82360SL RESUME_MASK register
  1645. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  1646. --------p-155380BH08-------------------------
  1647. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  1648.     AX = 5380h
  1649.     BH = 08h
  1650. Return: CF clear if successful
  1651.         CH = hours
  1652.         CL = minutes
  1653.         SI = seconds
  1654.     CF set on error
  1655.         AH = error code (see #0387)
  1656. Desc:    gets calendar event time from CMOS ram
  1657. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  1658.  
  1659. (Table 0387)
  1660. Values for APM SL error code:
  1661.  02h    no alarm set
  1662.  03h    no battery
  1663. --------p-155380BH09-------------------------
  1664. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  1665.     AX = 5380h
  1666.     BH = 09h
  1667.     CH = hours
  1668.     CL = minutes
  1669.     SI = seconds
  1670. Return: CF clear if successful
  1671.     CF set on error
  1672.         AH = error code (see #0387)
  1673. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  1674. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  1675. --------p-155380BH0A-------------------------
  1676. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  1677.     AX = 5380h
  1678.     BH = 0Ah
  1679. Return: CF clear if successful
  1680.         SI = century
  1681.         DI = year
  1682.         CH = month
  1683.         CL = day
  1684.     CF set on error
  1685.         AH = error code (see #0387)
  1686. Desc:    reads calendar event date from Extended CMOS ram
  1687. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  1688. --------p-155380BH0B-------------------------
  1689. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  1690.     AX = 5380h
  1691.     BH = 0Bh
  1692.     SI = century
  1693.     DI = year
  1694.     CH = month
  1695.     CL = day
  1696. Return: CF clear if successful
  1697.     CF set on error
  1698.         AH = error code (see #0387)
  1699. Desc:    sets calendar event date in Extended CMOS ram
  1700. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  1701. --------p-155380BH0C-------------------------
  1702. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  1703.     AX = 5380h
  1704.     BH = 0Ch
  1705. Return: CF clear if successful
  1706.     CL = CPU clock divider (1,2,4 or 8)
  1707.     BL = autocpumode ???
  1708. Desc:    reads bits 4-5 of CPUPWRMODE register
  1709. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  1710. --------p-155380BH0D-------------------------
  1711. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  1712.     AX = 5380h
  1713.     BH = 0Dh
  1714.     CL = CPU clock divider (1,2,4 or 8)
  1715.     BL = autocpumode ???
  1716. Return: CF clear if successful
  1717. Desc:    writes bits 4-5 of CPUPWRMODE register
  1718. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  1719. --------p-155380BH7E-------------------------
  1720. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  1721.     AX = 5380h
  1722.     BH = 7Eh
  1723. Return: AL = ???
  1724.         03h on A-Step 386SL BIOSes
  1725.         12h on later steps
  1726.     BX = Control port (00B0h)
  1727. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  1728. --------p-155380BH7F-------------------------
  1729. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  1730.     AX = 5380h
  1731.     BH = 7Fh
  1732. Return: CF clear if successful
  1733.         BX = OEM identifier
  1734.         all other registers OEM-defined
  1735.         ---Intel SL Enhanced Option BIOS---
  1736.         BX = 534Ch ('SL')
  1737.         CL = 4Fh ('O')
  1738.         AL = version (10h = 1.0)
  1739.         ---HP APM BIOS---
  1740.         BX = 4850h ('HP')
  1741.         CX = version (0001h)
  1742.     CF set on error
  1743.         AH = error code (03h) (see #0377)
  1744. SeeAlso: AX=5380h/BH=00h
  1745. --------p-155380-----------------------------
  1746. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  1747.     AX = 5380h
  1748.     BH <> 7Fh
  1749.     all other registers OEM-defined
  1750. Return: OEM-defined
  1751. SeeAlso: AX=5380h/BH=7Fh
  1752. --------X-1553B0BH00-------------------------
  1753. INT 15 - Intel System Management Bus - RESERVED
  1754.     AX = 53B0h
  1755.     BH = 00h
  1756. Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
  1757.       for the Smart Battery proposal, but designed to be generic enough to
  1758.       handle other devices besides batteries
  1759. --------X-1553B0BH01-------------------------
  1760. INT 15 - Intel System Management Bus - INSTALLATION CHECK
  1761.     AX = 53B0h
  1762.     BH = 01h
  1763.     BL = 72h ('r')
  1764.     CX = 6164h ('ad')
  1765. Return: CF clear if installed
  1766.         AH = SMBus BIOS Interface Specification major version (01h)
  1767.         AL = SMBus BIOS Interface Specification minor version (00h)
  1768.         BL = number of SMBus devices present
  1769.         CX = 6941h ('iA')
  1770.         DX = vendor-specified SMBus hardware code
  1771.         0000h means undefined hardware type
  1772.     CF set if error
  1773.         AH = Error code 0Ah, 86h (see #0388)
  1774. Note:    this function is only supported in INT 15h mode
  1775. SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
  1776.  
  1777. (Table 0388)
  1778. Values for Intel System Management Bus error codes:
  1779.  00h    SMBus OK
  1780.  01h    SMBus connect failed
  1781.  02h    SMBus already connected (see also #0389)
  1782.  03h    SMBus disconnect failed
  1783.  04h    SMBus not connected
  1784.  05h    SMBus INT 15 interface disabled
  1785.  06h    SMBus device address request out of range
  1786.  07h    SMBus unknown failure
  1787.  08h    SMBus message list empty
  1788.  09h    SMBus message list overflow
  1789.  0Ah    SMBus invalid signature
  1790.  10h    SMBus device address not acknowledged
  1791.  11h    SMBus device error detected
  1792.  12h    SMBus device command access denied
  1793.  13h    SMBus unknown error
  1794.  14h    SMBus transaction pending
  1795.  15h    SMBus no transaction pending
  1796.  16h    SMBus request does not match pending transaction
  1797.  17h    SMBus device access denied
  1798.  18h    SMBus timeout
  1799.  19h    SMBus protocol not supported
  1800.  1Ah    SMBus busy
  1801.  1Bh    SMBus SMI detected
  1802.  80h    SMBus OK (previously unreported SMI occurred)
  1803.  86h    SMBus not supported
  1804.  
  1805. (Table 0389)
  1806. Values for Intel System Management Bus Already Connected sub-error codes:
  1807.  01h    real mode connect already established
  1808.  02h    16-bit PMode connect already established
  1809.  03h    32-bit PMode connect already established
  1810. SeeAlso: #0388
  1811. --------X-1553B0BH02-------------------------
  1812. INT 15 - Intel System Management Bus - REAL MODE CONNECT
  1813.     AX = 53B0h
  1814.     BH = 02h
  1815.     CX = 6941h ('iA')
  1816. Return: CF clear if successful
  1817.         AX = SMBus Real mode code segment
  1818.         BX = offset of entry point into SMBus BIOS Interface
  1819.         CX = SMBus Real mode data segment
  1820.     CF set if error
  1821.         AH = error code (01h,02h,0Ah,86h) (see #0388)
  1822.         AL = sub-error code if error code is 02h (see #0389)
  1823. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  1824.       to the supplied entry point instead of INT 15 (with registers
  1825.       identical to those described here for INT 15)
  1826. Notes:    Support for this function is optional
  1827.     this function is only supported in INT 15 mode when implemented
  1828. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  1829. --------X-1553B0BH03-------------------------
  1830. INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
  1831.     AX = 53B0h
  1832.     BH = 03h
  1833.     CX = 6941h ('iA')
  1834. Return: CF clear if successful
  1835.         AX = SMBus 16-bit code segment (real mode base address)
  1836.         BX = offset of entry point into SMBus BIOS Interface
  1837.         CX = SMBus 16-bit data segment (real mode base address)
  1838.         SI = code segment length in bytes
  1839.         DI = data segment length in bytes
  1840.     CF set if error
  1841.         AH = error code (01h,02h,0Ah,86h) (see #0388)
  1842.         AL = sub-error code if error code is 02h (see #0389)
  1843. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  1844.       to the supplied entry point instead of INT 15 (with registers
  1845.       identical to those described here for INT 15)
  1846. Notes:    before calling the entry point, two descriptors must be initialized
  1847.       in the GDT or LDT.  They must be consecutive and be in the order of
  1848.       code, then data.  At the time    of the call, the descriptors must be
  1849.       valid and have CPL=0.
  1850.     the code descriptor must be ring-0 privilege
  1851.     this function is only supported in INT 15 mode
  1852. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  1853. --------X-1553B0BH04-------------------------
  1854. INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
  1855.     AX = 53B0h
  1856.     BH = 04h
  1857.     CX = 6941h ('iA')
  1858. Return: CF clear if successful
  1859.         AX = SMBus 32-bit code segment (real mode base address)
  1860.         EBX = offset of entry point into SMBus BIOS Interface
  1861.         CX = SMBus 16-bit code segment (real mode base address)
  1862.         DX = SMBus data segment (real mode base address)
  1863.         SI = code segment length in bytes
  1864.         DI = data segment length in bytes
  1865.     CF set if error
  1866.         AH = error code (01h,02h,0Ah,86h) (see #0388)
  1867.         AL = sub-error code if error code is 02h (see #0389)
  1868. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  1869.       to the supplied entry point instead of INT 15 (with registers
  1870.       identical to those described here for INT 15)
  1871. Notes:    before calling the entry point, two descriptors must be initialized in
  1872.       the GDT or LDT.  They must be consecutive and be in the order of
  1873.       32-bit code, 16-bit code, then data.    At the time of the call, the
  1874.       descriptors must be valid and have CPL=0.
  1875.     the code descriptors must be ring-0 privilege
  1876.     this function is supported only in INT 15 mode
  1877. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
  1878. --------X-1553B0BH05-------------------------
  1879. INT 15 - Intel System Management Bus - DISCONNECT
  1880.     AX = 53B0h
  1881.     BH = 05h
  1882.     CX = 6941h ('iA')
  1883. Return: CF clear if successful
  1884.         AH = 00h (SMBus OK)
  1885.     CF set if error
  1886.         AH = error code (03h,04h,05h,0Ah,86h) (see #0388)
  1887. Note:    this function is supported in connected mode (far CALL entry point)
  1888.       only
  1889. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
  1890. --------X-1553B0BH06-------------------------
  1891. INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES
  1892.     AX = 53B0h
  1893.     BH = 06h
  1894.     BL = position in list to report
  1895.     CH = 6941h ('iA')
  1896. Return: CF clear if successful
  1897.         AH = 00h (SMBus OK)
  1898.         BH = number of SMBus devices
  1899.         BL = SMBus Device Address of device at position BL in list
  1900.         (see #0390)
  1901.     CF set if error
  1902.         AH = error code (06h,0Ah,86h) (see #0388)
  1903. Desc:    retrieves already assigned SMBus device addresses
  1904. Notes:    this function is supported in INT 15h mode only
  1905.     bit 0 of the device address indicates read/write, so a device may
  1906.       be listed at both xxxxxxx0b and xxxxxxx1b
  1907.  
  1908. (Table 0390)
  1909. Values for System Management Bus predefined device addresses:
  1910.  10h    SMBus host
  1911.  12h    Smart Battery charger
  1912.  14h    Smart Battery selector
  1913.  16h    Smart Battery
  1914.  18h    SMBus Alert response
  1915.  50h    ACCESS.bus host
  1916.  58h    LCD contrast controller
  1917.  5Ah    CCFL backlight driver
  1918.  6Eh    ACCESS.bus default address
  1919.  80h-86h PCMCIA socket controllers
  1920.  88h    VGA graphics controller
  1921.  90h-96h unrestricted addresses
  1922.  82h    SMBus device default address
  1923. --------X-1553B0BH07-------------------------
  1924. INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES
  1925.     AX = 53B0h
  1926.     BH = 07h
  1927.     CX = 6941h ('iA')
  1928. Return: CF clear if successful
  1929.         AH = 00h (SMBus OK)
  1930.         AL = device address
  1931.         BX = device message
  1932.     CF set if error
  1933.         AH = error code (05h,07h,08h,09h,0Ah,86h) (see #0388)
  1934. Desc:    retrieves oldest queued critical message from an SMBus device to the
  1935.       host
  1936. Notes:    up to five messages are queued; if the queue is full, messages will be
  1937.       lost and error 09h returned
  1938. --------X-1553B0BH08-------------------------
  1939. INT 15 - Intel System Management Bus - RESERVED
  1940.     AX = 53B0h
  1941.     BH = 08h-0Fh
  1942. --------X-1553B0BH10-------------------------
  1943. INT 15 - Intel System Management Bus - REQUEST
  1944.     AX = 53B0h
  1945.     BH = 10h
  1946.     BL = protocol (see #0391)
  1947.     CH = device address
  1948.     CL = device command (see #0392)
  1949.     DH = MSB Data or block length (for BlockWrite)
  1950.     DL = LSB Data or first byte of block (for BlockWrite)
  1951. Return: CF clear if successful
  1952.         AH = 00h or 80h (SMBus OK)
  1953.          (80h indicates a previously unreported SMI took place)
  1954.     CF set if error
  1955.         AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
  1956.           (see #0388)
  1957. Desc:    request access to a device on the SMBus
  1958. SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
  1959.  
  1960. (Table 0391)
  1961. Values for Intel System Management Bus protocol codes:
  1962.  00h    Quick Command
  1963.  01h    Send Byte
  1964.  02h    Receive Byte
  1965.  03h    Write Byte
  1966.  04h    Read Byte
  1967.  05h    Write Word
  1968.  06h    Read Word
  1969.  07h    Block Write
  1970.  08h    Block Read
  1971.  09h    Process Call
  1972.  0Ah-FFh reserved
  1973. SeeAlso: #0392
  1974.  
  1975. (Table 0392)
  1976. Values for Intel System Management Bus Smart Battery command codes:
  1977.  Cmd    Protocol(s)    Description
  1978.  00h    Rd/Wr Word    "ManufacturerAccess" implementation-specific
  1979.  01h    Rd/Wr Word    get/set Low Capacity Alarm threshold
  1980.  02h    Rd/Wr Word    get/set Remaining Time Alarm value (in minutes)
  1981.  03h    Rd/Wr Word    get/set battery characteristics (see #0393)
  1982.  04h    Rd/Wr Word    "AtRate" indicate charge/discharge rate
  1983.  05h    Read Word    "AtRateTimeToFull" time to completely charge (in min.)
  1984.  06h    Read Word    "AtRateTimeToEmpty" time to entirely discharge (min.)
  1985.  07h    Read Word    "AtRateOK" boolean: can battery supply another 10sec?
  1986.  08h    Read Word    internal battery temperature (in 0.1 Kelvins)
  1987.  09h    Read Word    current battery voltage in millivolts
  1988.  0Ah    Read Word    current flowing through battery in milliamperes
  1989.             (positive if charging, negative if discharging)
  1990.  0Bh    Read Word    average current over the past minute
  1991.  0Ch    Read Word    expected error margin in capacity computations in %
  1992.  0Dh    Read Word    predicted remaining charge as % of full charge
  1993.  0Eh    Read Word    predicted remaining charge as % of design capacity
  1994.  0Fh    Read Word    predicted remaining charge in mAh or 10mWh
  1995.  10h    Read Word    predicted full charge capacity in mAh or 10mWh
  1996.  11h    Read Word    predicted remaining battery life in minutes
  1997.             FFFFh = not discharging
  1998.  12h    Read Word    rolling average of predicted life over past minute
  1999.  13h    Read Word    rolling average of predicted charge time over past min.
  2000.             FFFFh = not charging
  2001.  14h    Read Word    get battery's desired charging current in mA
  2002.  14h    Write Word    set charging current in mA
  2003.  15h    Read Word    get battery's desired charging current in mV
  2004.  15h    Write Word    set desired charging voltage in mV
  2005.  16h    Read Word    get current battery status (see #0394)
  2006.  17h    Read Word    get number of charge/discharge cycles for battery
  2007.  18h    Read Word    get design capacity in mAh or 10mWh
  2008.  19h    Read Word    get design voltage
  2009.  1Ah    Read Word    get specification information (see #0395)
  2010.  1Bh    Read Word    get manufacture date (see #1005 at INT 21/AX=5700h)
  2011.  1Ch    Read Word    get serial number
  2012.  1Dh-1Fh        reserved
  2013.  20h    Read Block    get manufacturer's name
  2014.  21h    Read Block    get device name
  2015.  22h    Read Block    get device chemistry (see #0396)
  2016.  23h    Read Block    get manufacturer data
  2017.  24h-2Eh        reserved
  2018.  2Fh            manufacturer-specific
  2019.  30h-3Bh        reserved
  2020.  3Ch-3Fh        manufacturer-specific
  2021. Note:    bits 7-6 are reserved for addressing multiple batteries in a future
  2022.       version of the specification
  2023. SeeAlso: #0391
  2024.  
  2025. Bitfields for Smart Battery battery characteristics:
  2026. Bit(s)    Description    (Table 0393)
  2027.  0    battery has internal charge controller (read-only)
  2028.  1    primary/secondary battery support (read-only)
  2029.  6-2    reserved
  2030.  7    conditioning cycle requested
  2031.  8    internal charge controller enabled
  2032.  9    battery operating in primary mode
  2033.  13-10    reserved
  2034.  14    disable broadcast to charger
  2035.  15    report capacity in units of 10mW / 10mWh instead of mA / mAh
  2036. SeeAlso: #0392,#0394
  2037.  
  2038. Bitfields for Smart Battery battery status:
  2039. Bit(s)    Description    (Table 0394)
  2040.  15    overcharged
  2041.  14    terminate-charge alarm
  2042.  13    reserved
  2043.  12    over-temperature alarm
  2044.  11    terminate-discharge alarm
  2045.  10    reserved
  2046.  9    remaining-capacity alarm
  2047.  8    remaining-time alarm
  2048.  7    initialized
  2049.  6    charging
  2050.  5    fully charged
  2051.  4    fully discharged
  2052.  3-0    error codes
  2053.     0000 OK
  2054.     0001 busy
  2055.     0010 reserved command
  2056.     0011 unsupported command
  2057.     0100 access denied (tried to write to read-only value)
  2058.     0101 overflow/underflow
  2059.     0110 bad size
  2060.     0111 unknown error
  2061. SeeAlso: #0392,#0393,#0395
  2062.  
  2063. Bitfields for Smart Battery specification information:
  2064. Bit(s)    Description    (Table 0395)
  2065.  3-0    SmartBattery specification minor revision number
  2066.  7-4    SmartBattery specification version number
  2067.  11-8    voltage scaling (0-3, multiply voltages by 10^scale)
  2068.  15-12    current scaling (0-3, multiply currents by 10^scale)
  2069. SeeAlso: #0392,#0394
  2070.  
  2071. (Table 0396)
  2072. Values for Smart Battery device chemistry (not case-sensitive):
  2073.  "LION"    Lithium ion
  2074.  "NiMH"    Nickel metal hydride
  2075.  "PbAc"    lead-acid
  2076.  "NiCd" Nickel Cadmium
  2077.  "NiZn" Nickel Zinc
  2078.  "RAM"    rechargeable Alkaline Manganese
  2079.  "ZnAr" Zinc-Air
  2080. SeeAlso: #0392
  2081. --------X-1553B0BH11-------------------------
  2082. INT 15 - Intel System Management Bus - REQUEST CONTINUATION
  2083.     AX = 53B0h
  2084.     BH = 11h
  2085.     BL = protocol (see #0391)
  2086.     CH = device address
  2087.     CL = number of valid bytes in DX (1 or 2)
  2088.     DH = MSB Data (CL = 1 or 2)
  2089.     DL = LSB Data (CL = 2)
  2090. Return: CF clear if successful
  2091.         AH = 00h (SMBus OK)
  2092.         CL = SMBus status
  2093.         00h SMBus hardware not ready for more data
  2094.         01h SMBus hardware ready for 2 more data bytes
  2095.     CF set if error
  2096.         AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #0388)
  2097. Desc:    continue WriteBlock protocol started with function 10h
  2098. SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
  2099. --------X-1553B0BH12-------------------------
  2100. INT 15 - Intel System Management Bus - REQUEST ABORT
  2101.     AX = 53B0h
  2102.     BH = 12h
  2103.     BL = protocol (see #0391)
  2104.     CH = device address
  2105.     CL = device command
  2106. Return: CF clear if successful
  2107.         AH = 00h (SMBus OK)
  2108.     CF set if error
  2109.         AH = error code (05h,13h,15h,16h,86h) (see #0388)
  2110. Desc:    stop the currently pending SMBus request; usually used to terminate
  2111.       a request after an SMI Detected error
  2112. --------X-1553B0BH13-------------------------
  2113. INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
  2114.     AX = 53B0h
  2115.     BH = 13h
  2116.     BL = protocol (see #0391)
  2117.     CH = device address
  2118.     CL = device command
  2119. Return: CF clear if successful
  2120.         AH = 00h (SMBus OK)
  2121.         CH = status
  2122.         00h no data pending, transaction complete
  2123.         01h no data pending, transaction continues
  2124.         02h data pending
  2125.         CL = number of valid bytes in DX (0-2)
  2126.         DH = MSB data
  2127.         DL = LSB data
  2128.     CF set if error
  2129.         AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #0388)
  2130. Desc:    determine when a transaction is complete, gather data returned by read
  2131.       transactions
  2132. Note:    for Block Read protocol (08h), first call returns block    length in DH
  2133.       and the first byte of the block in DL
  2134. --------T-155400-----------------------------
  2135. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  2136.     AX = 5400h
  2137.     ES:BX -> device information tables
  2138.     DI:DX -> dispatcher entry point
  2139. Note:    called by OmniView to notify programs loaded before OmniView of state
  2140.       changes inside OmniView
  2141. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  2142. --------T-155401-----------------------------
  2143. INT 15 C - Omniview Multitasker - PROCESS CREATION
  2144.     AX = 5401h
  2145.     ES:BX = process handle
  2146. Note:    called by OmniView to notify programs loaded before OmniView of state
  2147.       changes inside OmniView
  2148. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  2149. --------T-155402-----------------------------
  2150. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  2151.     AX = 5402h
  2152.     ES:DX = process handle
  2153. Note:    called by OmniView to notify programs loaded before OmniView of state
  2154.       changes inside OmniView
  2155. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  2156. --------T-155403-----------------------------
  2157. INT 15 C - Omniview Multitasker - SAVE
  2158.     AX = 5403h
  2159.     ES:DX = process swapping out
  2160. Note:    called by OmniView to notify programs loaded before OmniView of state
  2161.       changes inside OmniView
  2162. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  2163. --------T-155404-----------------------------
  2164. INT 15 C - Omniview Multitasker - RESTORE
  2165.     AX = 5404h
  2166.     ES:DX = process swapping in
  2167. Note:    called by OmniView to notify programs loaded before OmniView of state
  2168.       changes inside OmniView
  2169. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  2170. --------T-155405-----------------------------
  2171. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  2172.     AX = 5405h
  2173.     ES:DX = process swapping in
  2174. Note:    called by OmniView to notify programs loaded before OmniView of state
  2175.       changes inside OmniView
  2176. SeeAlso: AX=5406h
  2177. --------T-155406-----------------------------
  2178. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  2179.     AX = 5406h
  2180.     ES:DX = process swapping in
  2181. Note:    called by OmniView to notify programs loaded before OmniView of state
  2182.       changes inside OmniView
  2183. SeeAlso: AX=5405h
  2184. --------T-155407-----------------------------
  2185. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  2186.     AX = 5407h
  2187. Note:    called by OmniView to notify programs loaded before OmniView of state
  2188.       changes inside OmniView
  2189. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  2190. --------b-1560------------------------------------
  2191. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  2192.     AH = 60h
  2193.     AL = new speed
  2194.         00h normal (8 MHz)
  2195.         01h Slow Mode 1 (4 MHz)
  2196.         02h Slow Mode 2 (2 MHz)
  2197. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  2198.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  2199. SeeAlso: AX=6301h
  2200. --------p-156000-----------------------------
  2201. INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL
  2202.     AX = 6000h
  2203. Return: AX = battery level
  2204. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  2205. SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
  2206. --------p-156001-----------------------------
  2207. INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL
  2208.     AX = 6001h
  2209. Return: AX = battery level
  2210. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  2211. SeeAlso: AX=6000h,AX=6002h
  2212. --------p-156002-----------------------------
  2213. INT 15 U - HP 100LX/200LX - GET POWER INFO
  2214.     AX = 6002h
  2215. Return: AL = power settings (see #0397)
  2216. SeeAlso: AX=6000h,AX=6003h,AX=6004h
  2217.  
  2218. Bitfields for power settings:
  2219. Bit(s)    Description    (Table 0397)
  2220.  0-1    unused ???
  2221.  2    card battery status low (OK if bit clear)
  2222.  3    battery charging off (disabled if bits 3-5 clear)
  2223.  4    battery charging slow
  2224.  5    battery charging fast
  2225.  6    power adaptor active
  2226.  7    battery type NiCad (alkaline if bit clear)
  2227. --------p-156003-----------------------------
  2228. INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE
  2229.     AX = 6003h
  2230.     BL = battery type
  2231.         00h alkaline
  2232.         01h NiCad
  2233. SeeAlso: AX=6000h,AX=6004h
  2234. --------p-156004-----------------------------
  2235. INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE
  2236.     AX = 6004h
  2237.     BL = charging
  2238.         00h disabled
  2239.         01h enabled
  2240. SeeAlso: AX=6000h,AX=6003h
  2241. --------b-1561------------------------------------
  2242. INT 15 - HUNTER 16 - GET POWER LEVEL
  2243.     AH = 61h
  2244. Return: AH = percentage of full power left (0..100)
  2245. Desc:    determine how much battery power is left
  2246. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  2247. --------b-1561-------------------------------
  2248. INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION
  2249.     AH = 61h
  2250.     AL = position (20h = left, 60h = right)
  2251. Note:    The announciators are the indicator symbols for the Shift and Fn keys
  2252.       in the bottom line
  2253. SeeAlso: AH=62h"HP",INT 16/AH=02h
  2254. --------b-1562------------------------------------
  2255. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  2256.     AH = 62h
  2257.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  2258.     BX = interval between power low warnings in seconds (1..600)
  2259. Return: AH = Status
  2260. Desc:    set the level (relative to full power) when power-low warnings begin
  2261.       and the interval between the warnings
  2262. SeeAlso: AH=61h,AH=65h,AH=66h
  2263. --------b-1562-------------------------------
  2264. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST
  2265.     AH = 62h
  2266.     BL = contrast (00h-1Fh, 1Fh is the darkest)
  2267. SeeAlso: AH=47h"HP",AH=61h"HP"
  2268. --------b-156300----------------------------------
  2269. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  2270.     AX = 6300h
  2271. Return: AH = status
  2272.     BX = timeout in seconds (0-3600)
  2273. Desc:    get the idle timeout value, the interval without keyboard or
  2274.        communications activity before the system shuts down
  2275. SeeAlso: AX=6301h
  2276. --------b-156301----------------------------------
  2277. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  2278.     AX = 6301h
  2279.     BX = timeout in seconds (0-3600)
  2280. Desc:    sets the idle timeout value, the interval without keyboard or
  2281.       communications activity before the system shuts down
  2282. SeeAlso: AX=6300h
  2283. --------b-1564------------------------------------
  2284. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  2285.     AH = 64h
  2286.     AL = new state
  2287.         00h disable Resume mode
  2288.         01h enable Resume mode
  2289. Return: AH = status
  2290. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  2291.       the application that was running when it shut down as if nothing
  2292.       had happened.
  2293. SeeAlso: AH=67h,AH=68h,AH=69h
  2294. --------b-1565------------------------------------
  2295. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  2296.     AH = 65h
  2297.     AL = charging level
  2298.         01h charging not allowed
  2299.         02h charging allowed until power down
  2300.         03h charging allowed until batteries changed or fail.
  2301.         Ask user if charging is still allowed on next poweron
  2302.         04h charging allowed indefinitely
  2303.     BX = 0203h
  2304.     CX = 0405h
  2305.     DX = 0607h
  2306. Return: AH = status
  2307. SeeAlso: AH=66h,AH=68h
  2308. --------b-1566------------------------------------
  2309. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  2310.     AH = 66h
  2311.     AL = level in percent of maximum (0..100)
  2312. Return: AH = status
  2313. SeeAlso: AH=61h,AH=65h
  2314. --------b-1567------------------------------------
  2315. INT 15 - HUNTER 16 - CONTROL STOP MODE
  2316.     AH = 67h
  2317.     AL = mode when waiting for input
  2318.         00h use STOP mode (allows communication)
  2319.         01h use HALT mode (disallows communication)
  2320. Return: AH = status
  2321. Desc:    select the power save mode to use when waiting for input
  2322. SeeAlso: AH=69h
  2323. --------b-1568------------------------------------
  2324. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  2325.     AH = 68h
  2326. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  2327. SeeAlso: AH=69h
  2328. --------b-1569------------------------------------
  2329. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  2330.     AH = 69h
  2331.     AL = mode
  2332.         00h inhibit power down
  2333.         01h allow power down
  2334. Return: AH = status
  2335. SeeAlso: AH=67h,AH=68h,AH=6Ah
  2336. --------b-156A------------------------------------
  2337. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  2338.     AH = 6Ah
  2339.     AL = mode
  2340.         00h inhibit Slow mode
  2341.         01h allow Slow mode
  2342. Return: AH = status
  2343. SeeAlso: AH=69h
  2344. --------b-156B------------------------------------
  2345. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  2346.     AH = 6Bh
  2347. Return: BH = version number (ASCII)
  2348.     BL = release number (ASCII)
  2349.     CH = major??? release number (ASCII)
  2350.     CL = minor??? release number (ASCII)
  2351. SeeAlso: AH=6Ch
  2352. --------b-156C------------------------------------
  2353. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  2354.     AH = 6Ch
  2355. Return: BL:CX = BCD serial number
  2356. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  2357.       different number can be stored (see AH=72h)
  2358. SeeAlso: AH=6Bh,AH=72h
  2359. --------b-156D------------------------------------
  2360. INT 15 - HUNTER 16 - GET EVENT DETAIL
  2361.     AH = 6Dh
  2362. Return: AH = 00h if successful
  2363.     CX:BX = event flags bit 0..31 (see #0398)
  2364. Note:    this function allows testing for events
  2365. SeeAlso: AH=6Eh,AH=6Fh
  2366.  
  2367. Bitfields for HUNTER 16 events:
  2368. Bit(s)    Description    (Table 0398)
  2369.  6    RI received
  2370.  5    RTC Alarm
  2371.  4    data received on COM2
  2372.  3    data received on COM1
  2373.  2    error on COM2
  2374.  1    error on COM1
  2375.  0    PWR button pressed
  2376. --------b-156E------------------------------------
  2377. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  2378.     AH = 6Eh
  2379.     AL = Software Interrupt
  2380.           00h  do not trap event
  2381.           else trap as software interrupt number AL
  2382.     BH = event number (see AH=6Dh)
  2383.     BL = enable mask
  2384.         00h disable event
  2385.         01h enable event
  2386. Return: AH = 00h if successful
  2387. SeeAlso: AH=6Dh,AH=6Fh
  2388. --------b-156F------------------------------------
  2389. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  2390.     AH = 6Fh
  2391.     AL = event number (see AH=6Dh)
  2392. Return: AH = 00h if successful
  2393. Desc:    Acknowledges the event, so the next similar event can be detected
  2394. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  2395. --------b-1570------------------------------------
  2396. INT 15 - HUNTER 16 - CONTROL SOUND
  2397.     AH = 70h
  2398.     AL = new state
  2399.         00h disable sound
  2400.         else enable sound
  2401. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  2402.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  2403. --------x-157000-----------------------------
  2404. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  2405.     AX = 7000h
  2406.     BL = number of word to read (00h-3Fh)
  2407. Return: CF clear if function supported
  2408.         DX = contents of EEPROM word
  2409. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  2410.       the clock chip to store system configuration information
  2411. SeeAlso: AX=7001h
  2412. --------x-157001-----------------------------
  2413. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  2414.     AX = 7001h
  2415.     BL = number of word to read (00h-3Fh)
  2416.     DX = new value for EEPROM word
  2417. Return: CF clear if function supported
  2418. Note:    the EEPROMs are normally written only by the system setup program;
  2419.       changing the values can badly mess up a Tandy
  2420. SeeAlso: AX=7000h
  2421. ----------157002-----------------------------
  2422. INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
  2423.     AX = 7002h
  2424. Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
  2425. Note:    some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  2426.       BIOS uses this call to determine what ROM page is mapped in the 64k
  2427.       segment at 0E0000h.
  2428.     the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  2429.       0F0000h.  There may be 16 32k ROM pages on other systems.
  2430. SeeAlso: AX=7003h,INT E0"DeskMate"
  2431. ----------157003-----------------------------
  2432. INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
  2433.     AX = 7003h
  2434.     DL = ROM page to be mapped at 0E0000h (0-6 (13?))
  2435. Return: CF clear if valid ROM page specified
  2436. Note:    Some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  2437.       BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
  2438.     The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  2439.       0F0000h.  There may be 16 32k ROM pages on other systems.
  2440. SeeAlso: AX=7002h,INT E0"DeskMate"
  2441. --------b-1571------------------------------------
  2442. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  2443.     AH = 71h
  2444.     BL = column
  2445.     BH = row
  2446.     AL = column switch (00h disable, 01h enable)
  2447.     CL = row switch (00h disable, 01h enable)
  2448. Return: AH = status
  2449. SeeAlso: AH=7Bh,AH=88h
  2450. --------b-157200----------------------------------
  2451. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  2452.     AX = 7200h
  2453. Return: AH = 00h if successful
  2454. Desc:    reset the serial number to the default serial number present when the
  2455.       Hunter 16 was shipped
  2456. SeeAlso: AH=6Ch,AH=72h
  2457. --------b-1572------------------------------------
  2458. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  2459.     AH = 72h
  2460.     AL nonzero
  2461.     DS:BX -> new serial number (6 ASCII digits)
  2462. Return: AH = 00h if successful
  2463. Desc:    install a new serial number
  2464. SeeAlso: AH=6Ch,AX=7200h
  2465. --------b-1573------------------------------------
  2466. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  2467.     AH = 73h
  2468.     AL = drive (0: A:, 1: B:)
  2469. Return: AH = status
  2470.         00h successful
  2471.         FFh Oracle GT drive not connected
  2472.     AL = power level in percent of maximum (0..100)
  2473. Desc:    get the power remaining in the Oracle GT batteries
  2474. SeeAlso: AH=61h
  2475. --------b-1574------------------------------------
  2476. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  2477.     AH = 74h
  2478.     AL = new level
  2479.         01h off
  2480.         02h unchanged
  2481.         03h change level
  2482.         BL = desired level (00h-7Fh)
  2483. Return: AH = status
  2484. Desc:    select the backlight level to use when the Hunter is next turned on
  2485. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  2486. --------b-1575------------------------------------
  2487. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  2488.     AH = 75h
  2489.     AL = new level
  2490.         01h off
  2491.         02h unchanged
  2492.         03h change level
  2493.         BL = desired level (00h-7Fh)
  2494. Return: AH = status
  2495. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  2496. SeeAlso: AH=63h,AH=74h
  2497. --------b-1576------------------------------------
  2498. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  2499.     AH = 76h
  2500.     BX = power save control (see #0399)
  2501. SeeAlso: AH=74h
  2502.  
  2503. Bitfields for HUNTER 16 power save control:
  2504. Bit(s)    Description    (Table 0399)
  2505.  0    power save enabled
  2506.  1    inhibit power save when waiting for COM1 data
  2507.  2    inhibit power save when waiting for COM2 data
  2508.  3    inhibit power save when waiting for data from barcode wand
  2509.  4    inhibit power up on timer tick
  2510. --------b-1579------------------------------------
  2511. INT 15 - HUNTER 16 - REDIRECT LPT1
  2512.     AH = 79h
  2513.     AL = port to which to redirect (00h COM1, 01h COM2)
  2514. --------b-157A------------------------------------
  2515. INT 15 - HUNTER 16 - INVOKE HOT KEY
  2516.     AH = 7Ah
  2517. Desc:    this function has the same effect as pressing the HOT key
  2518. SeeAlso: AH=7Bh
  2519. --------b-157B------------------------------------
  2520. INT 15 - HUNTER 16 - CONTROL HOT KEY
  2521.     AH = 7Bh
  2522.     AL = 00h prevent HOT key
  2523.         else allow HOT key
  2524. Desc:    Allow or prevent the HOT key function which is used to examine and
  2525.       change the Hunter setup
  2526. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  2527. --------b-157C------------------------------------
  2528. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  2529.     AH = 7Ch
  2530.     AL = 00h prevent HOT key power option
  2531.         else allow HOT key power option
  2532. Desc:    allow or prevent changing the power options
  2533. SeeAlso: AH=7Bh,AH=7Dh
  2534. --------b-157D------------------------------------
  2535. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  2536.     AH = 7Dh
  2537.     AL = 00h turn off after 10 warnings
  2538.         else never turn off
  2539. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  2540. SeeAlso: AH=7Ch
  2541. --------b-157E------------------------------------
  2542. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  2543.     AH = 7Eh
  2544.     AL = 00h do not prompt
  2545.         else prompt
  2546. Desc:    select whether the user is prompted for the battery state if the
  2547.       battery cap has been off when the system is turned on
  2548. SeeAlso: AH=7Fh
  2549. --------b-157F------------------------------------
  2550. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  2551.     AH = 7Fh
  2552.     AL = battery type
  2553.         00h     non-rechargeable
  2554.         else rechargeable
  2555. SeeAlso: AH=7Eh
  2556. --------B-1580-------------------------------
  2557. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  2558.     AH = 80h
  2559.     BX = device ID
  2560.     CX = process ID
  2561.     CF clear
  2562. Return: CF clear if successful
  2563.         AH = 00h
  2564.     CF set on error
  2565.         AH = status (see #0400)
  2566. Note:    this function should be hooked by a multitasker which wishes to keep
  2567.       track of device ownership; the default BIOS handler merely returns
  2568.       successfully
  2569. SeeAlso: AH=81h,AH=82h
  2570.  
  2571. (Table 0400)
  2572. Values for status:
  2573.  80h    invalid command (PC,PCjr)
  2574.  86h    function not supported (XT)
  2575. --------b-1580------------------------------------
  2576. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  2577.     AH = 80h
  2578.     AL = function
  2579.         00h get
  2580.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  2581.         else set
  2582.         BL = battery capacity (same as AL above)
  2583. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  2584. --------B-1581-------------------------------
  2585. INT 15 C - OS HOOK - DEVICE CLOSE
  2586.     AH = 81h
  2587.     BX = device ID
  2588.     CX = process ID
  2589.     CF clear
  2590. Return: CF clear if successful
  2591.         AH = 00h
  2592.     CF set on error
  2593.         AH = status (see #0400)
  2594. Note:    this function should be hooked by a multitasker which wishes to keep
  2595.       track of device ownership; the default BIOS handler merely returns
  2596.       successfully
  2597. SeeAlso: AH=80h,AH=82h
  2598. --------b-1581------------------------------------
  2599. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  2600.     AH = 81h
  2601.     AL = new state of power output (00h off, nonzero on)
  2602. Desc:    turn the +5V low power output on or off
  2603. SeeAlso: AH=80h"HUNTER"
  2604. --------B-1582-------------------------------
  2605. INT 15 C - OS HOOK - PROGRAM TERMINATION
  2606.     AH = 82h
  2607.     BX = process ID
  2608.     CF clear
  2609. Return: CF clear if successful
  2610.         AH = 00h
  2611.     CF set on error
  2612.         AH = status (see #0400)
  2613. Notes:    closes all devices opened by the given process ID with function 80h
  2614.     this function should be hooked by a multitasker which wishes to keep
  2615.       track of device ownership; the default BIOS handler merely returns
  2616.       successfully
  2617. SeeAlso: AH=80h,AH=81h
  2618. --------b-1582------------------------------------
  2619. INT 15 - HUNTER 16 - SOUND OUTPUT
  2620.     AH = 82h
  2621.     DX = length (duration in seconds = DX * 666670 / frequency)
  2622.     BX = pitch (see #0401)
  2623. Desc:    Sound the tone specified in BX for the duration in DX
  2624. SeeAlso: AX=1019h
  2625.  
  2626. (Table 0401)
  2627. Values for HUNTER 16 sound pitch:
  2628. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  2629.   425    G    1568.000     1515    A     440.000
  2630.   451    F#    1479.503     1605    G#     415.307
  2631.   477    F    1396.900     1701    G     392.000
  2632.   506    E    1318.500     1802    F#     369.998
  2633.   536    D#    1244.523     1909    F     349.230
  2634.   568    D    1174.700     2022    E     329.630
  2635.   601    C#    1108.749     2143    D#     311.127
  2636.   637    C    1046.500     2270    D     293.660
  2637.   675    B     958.770     2405    C#     277.183
  2638.   715    A#     932.329     2548    MID C     261.630
  2639.   758    A     880.000     2700    B     246.940
  2640.   803    G#     830.609     2860    A#     233.081
  2641.   850    G     783.990     3030    A     220.000
  2642.   901    F#     739.990     3210    G#     207.654
  2643.   954    F     698.460     3401    G     196.000
  2644.  1011    E     659.260     3604    F#     184.996
  2645.  1071    D#     622.257     3818    F     174.610
  2646.  1135    D     587.330     4045    E     164.810
  2647.  1203    C#     554.365     4286    D#     155.560
  2648.  1274    C     523.250     4540    D     146.830
  2649.  1350    B     493.880     4668    C#     142.827
  2650.  1430    A#     466.162     4803    C     138.810
  2651. --------B-1583-------------------------------
  2652. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  2653.     AH = 83h
  2654.     AL = subfunction
  2655.         00h set interval
  2656.         CX:DX = microseconds to delay
  2657.         ES:BX -> byte whose high bit is to be set at end of interval
  2658.         01h cancel wait interval
  2659. Return: CF set on error or function already busy
  2660.         AH = status
  2661.         80h invalid command (PC,PCjr)
  2662.         86h function not supported (XT and later)
  2663.     CF clear if successful
  2664. Notes:    the resolution of the wait period is 977 microseconds on most systems
  2665.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  2666.       real-time clock chip which is available on INT 70
  2667.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  2668. SeeAlso: AH=41h,AH=86h,INT 70
  2669. --------b-1583------------------------------------
  2670. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  2671.     AH = 83h
  2672.     AL = state of LCD window (00h disabled, nonzero enabled)
  2673. Desc:    Enable/disable the facility where the displayed window tracks the
  2674.       cursor output to keep the focus visible
  2675. --------B-1584-------------------------------
  2676. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  2677.     AH = 84h
  2678.     DX = subfunction
  2679.         0000h read joystick switches
  2680.         Return: AL bits 7-4 = switch settings
  2681.         0001h read positions of joysticks
  2682.         Return: AX = X position of joystick A
  2683.             BX = Y position of joystick A
  2684.             CX = X position of joystick B
  2685.             DX = Y position of joystick B
  2686. Return: CF set on error
  2687.         AH = status (see #0400)
  2688.     CF clear if successful
  2689. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  2690.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  2691.     a 250kOhm joystick typically returns 0000h-01A0h
  2692. SeeAlso: AH=84h"V20-XT-BIOS"
  2693. --------b-1584-------------------------------
  2694. INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
  2695.     AH = 84h
  2696.     DX = subfunction
  2697.         0000h read joystick switches
  2698.         Return: AL bits 7-4 = switch settings
  2699.         other: read positions of joysticks as indicated by bits 0-3
  2700.         Return: AX = X position of joystick A (if DX bit 0 set)
  2701.             BX = Y position of joystick A (if DX bit 1 set)
  2702.             CX = X position of joystick B (if DX bit 2 set)
  2703.             DX = Y position of joystick B (if DX bit 3 set)
  2704. Return: CF set on error
  2705.         AH = status (see #0400)
  2706.     CF clear if successful
  2707. Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
  2708.        Koehlmann / c't magazine
  2709. SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
  2710. --------b-158400----------------------------------
  2711. INT 15 - HUNTER 16 - GET DISKETTE PORT
  2712.     AX = 8400h
  2713.     BH = Drive (0: A:, 1: B:)
  2714. Return: AL = Port (0: COM1, >0: COM2)
  2715. Desc:    return the COM port used for the floppy drive
  2716. SeeAlso: AX=8401h
  2717. --------b-158401----------------------------------
  2718. INT 15 - HUNTER 16 - SET DISKETTE PORT
  2719.     AX = 8401h
  2720.     BH = Drive (0: A:, 1: B:)
  2721.     BL = Port (0: COM1, >0: COM2)
  2722. Desc:    set the COM port used for the floppy drive
  2723. SeeAlso: AX=8400h
  2724. --------B-1585-------------------------------
  2725. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  2726.     AH = 85h
  2727.     AL = SysReq key action (00h pressed, 01h released)
  2728.     CF clear
  2729. Return: CF clear if successful
  2730.         AH = 00h
  2731.     CF set on error
  2732.         AH = status (see #0400)
  2733. Notes:    called by keyboard decode routine
  2734.     the default handler simply returns successfully; programs which wish
  2735.       to monitor the SysReq key must hook this call
  2736.     the SysReq key is often labeled SysRq
  2737. SeeAlso: INT 09
  2738. --------b-158500----------------------------------
  2739. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  2740.     AX = 8500h
  2741. Desc:    restore the standard power menu
  2742. SeeAlso: AX=8501h"HUNTER"
  2743. --------b-158501----------------------------------
  2744. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  2745.     AX = 8501h
  2746.     BL = user software interrupt number
  2747. Desc:    install an alternate power menu routine
  2748. SeeAlso: AX=8500h"HUNTER"
  2749. --------B-1586-------------------------------
  2750. INT 15 - BIOS - WAIT (AT,PS)
  2751.     AH = 86h
  2752.     CX:DX = interval in microseconds
  2753. Return: CF clear if successful (wait interval elapsed)
  2754.     CF set on error or AH=83h wait already in progress
  2755.         AH = status (see #0400)
  2756. Note:    the resolution of the wait period is 977 microseconds on most systems
  2757.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  2758.       real-time clock chip which is available on INT 70
  2759. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  2760. --------b-1586------------------------------------
  2761. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  2762.     AH = 86h
  2763.     AL = function (00h get, nonzero set)
  2764.     BX = 1234h
  2765.     DS:SI -> 256-byte Attribute buffer
  2766. Note:    In text modes each character has its attribute byte XOR'd with the
  2767.       corresponding byte in the attribute table.  If the attribute is 15,
  2768.       15 is XOR'd with Table[15]
  2769. --------B-1587-------------------------------
  2770. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  2771.     AH = 87h
  2772.     CX = number of words to copy (max 8000h)
  2773.     ES:SI -> global descriptor table (see #0403)
  2774. Return: CF set on error
  2775.     CF clear if successful
  2776.     AH = status (see #0402)
  2777. Notes:    copy is done in protected mode with interrupts disabled by the default
  2778.       BIOS handler; many 386 memory managers perform the copy with
  2779.       interrupts enabled
  2780.     this function is incompatible with the OS/2 compatibility box
  2781. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  2782.  
  2783. (Table 0402)
  2784. Values for extended-memory copy status:
  2785.  00h    source copied into destination
  2786.  01h    parity error
  2787.  02h    interrupt error
  2788.  03h    address line 20 gating failed
  2789.  80h    invalid command (PC,PCjr)
  2790.  86h    unsupported function (XT,PS30)
  2791.  
  2792. Format of global descriptor table:
  2793. Offset    Size    Description    (Table 0403)
  2794.  00h 16 BYTEs    zeros (used by BIOS)
  2795.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  2796.  12h  3 BYTEs    24-bit linear source address, low byte first
  2797.  15h    BYTE    source segment access rights (93h)
  2798.  16h    WORD    zero
  2799.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  2800.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  2801.  1Dh    BYTE    destination segment access rights (93h)
  2802.  1Eh 18 BYTEs    zeros (used by BIOS)
  2803. --------b-1587------------------------------------
  2804. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  2805.     AH = 87h
  2806.     DS:DX = new service routine
  2807. Desc:    set the INT 72h vector which is called in 2 cases:
  2808.       - when the machine is about to turn off or reboot, INT 72h is called
  2809.         with AH=0
  2810.       - when the machine is powering up INT 72h is called with AH=01h
  2811. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  2812. --------B-1588-------------------------------
  2813. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  2814.     AH = 88h
  2815. Return: CF clear if successful
  2816.         AX = number of contiguous KB starting at absolute address 100000h
  2817.     CF set on error
  2818.         AH = status
  2819.         80h invalid command (PC,PCjr)
  2820.         86h unsupported function (XT,PS30)
  2821. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  2822.       this call, and return a reduced memory size.    They are then free to
  2823.       use the memory between the new and old sizes at will.
  2824.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  2825.       for memory beyond 16MB
  2826.     not all BIOSes correctly return the carry flag, making this call
  2827.       unreliable unless one first checks whether it is supported through
  2828.       a mechanism other than calling the function and testing CF
  2829. SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h
  2830. --------b-1588------------------------------------
  2831. INT 15 - HUNTER 16 - GET POWER UP KEYS
  2832.     AH = 88h
  2833. Return: AH = 00h
  2834.     BX = column
  2835.     CL = row
  2836. SeeAlso: AH=71h
  2837. --------B-1589-------------------------------
  2838. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  2839.     AH = 89h
  2840.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  2841.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  2842.     ES:SI -> GDT for protected mode (see #0404)
  2843. Return: CF set on error
  2844.        AH = FFh  error enabling address line 20
  2845.     CF clear if successful
  2846.        AH = 00h
  2847.        in protected mode at specified address
  2848. Notes:    BL and BH must be multiples of 8
  2849.     the protected-mode CS must reference the same memory as the CS this
  2850.       function is called from because execution continues with the address
  2851.       following the interrupt call
  2852. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  2853.  
  2854. Format of BIOS switch-to-protected-mode Global Descriptor Table:
  2855. Offset    Size    Description    (Table 0404)
  2856.  00h  8 BYTEs    null descriptor (initialize to zeros)
  2857.  08h  8 BYTEs    GDT descriptor (see #0405)
  2858.  10h  8 BYTEs    IDT descriptor
  2859.  18h  8 BYTEs    DS descriptor
  2860.  20h  8 BYTEs    ES
  2861.  28h  8 BYTEs    SS
  2862.  30h  8 BYTEs    CS
  2863.  38h  8 BYTEs    uninitialized, used to build descriptor for BIOS CS
  2864.  
  2865. Format of segment descriptor table entry:
  2866. Offset    Size    Description    (Table 0405)
  2867.  00h    WORD    segment limit, low word
  2868.  02h  3 BYTEs    segment base address, low 24 bits
  2869.  05h    BYTE    access mode (see #0406)
  2870.  06h    BYTE    386+ extended access mode (see #0407)
  2871.  07h    BYTE    386+ segment base address, high 8 bits
  2872. SeeAlso: #0404,INT 2C/AX=0002h,INT 31/AX=0009h
  2873.  
  2874. Bitfields for segment descriptor table access mode field:
  2875. Bit(s)    Description    (Table 0406)
  2876.  3-0    segment type
  2877.  4    descriptor type (1 = application, 0 = system)
  2878.  6-5    descriptor privilege level
  2879.  7    segment is present in RAM
  2880. SeeAlso: #0405,#0407
  2881.  
  2882. Bitfields for 386+ segment descriptor table extended access mode field:
  2883. Bit(s)    Description    (Table 0407)
  2884.  3-0    high 4 bits of segment limit
  2885.  4    available
  2886.  5    reserved (0)
  2887.  6    default operation size (1 = 32 bits, 0 = 16 bits)
  2888.  7    granularity (1 = 4K, 0 = byte)
  2889. SeeAlso: #0405,#0406,#1892
  2890. --------b-158900----------------------------------
  2891. INT 15 - HUNTER 16 - GET POWER MODE
  2892.     AX = 8900h
  2893. Return: AH = 00h
  2894.     BL = current power mode
  2895.         00h Standard Power Mode (SPM)
  2896.         01h Advanced Power Mode (APM)
  2897. SeeAlso: AX=8901h
  2898. --------b-158901----------------------------------
  2899. INT 15 - HUNTER 16 - SET POWER MODE
  2900.     AX = 8901h
  2901.     BL = new mode
  2902.         00h Standard Power Mode (SPM)
  2903.         01h Advanced Power Mode (APM)
  2904. Return: AH = 00h
  2905. SeeAlso: AX=8900h
  2906. --------b-158A------------------------------------
  2907. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  2908.     AH = 8Ah
  2909.     AL = new state of Power Input (00h disabled, nonzero enabled)
  2910.     SI = 1234h
  2911.     DI = 5678h
  2912. Return: AH = status
  2913.         00h success
  2914.         FFh failure
  2915. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  2916.       adapter will neither charge the batteries nor supply power to the
  2917.       Hunter 16. Disable Power Input if using Alkaline batteries.
  2918. --------b-158A-------------------------------
  2919. INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
  2920.     AH = 8Ah
  2921. Return: DX:AX = extended memory size in K
  2922. SeeAlso: AH=88h,AX=E801h,AX=E820h
  2923. --------b-158B------------------------------------
  2924. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  2925.     AH = 8Bh
  2926.     AL = function
  2927.         00h get
  2928.         Return:    BH = Maximum charging temperature
  2929.                 Temp = -20 + (n * 0.63) degrees Centigrade
  2930.             BL = Minimum charging temperature
  2931.         else set
  2932.         BH = maximum charging temperature (as above)
  2933.         BL = minimum charging temperature (as above)
  2934. Return: AH = status
  2935.         00h success
  2936.         FFh failure
  2937. Desc:    get/set the temperature interval within which the charger should
  2938.       operate
  2939. --------b-158C------------------------------------
  2940. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  2941.     AH = 8Ch
  2942.     AL = function
  2943.         00h get
  2944.         Return: BX = which operations disable power save (see #0408)
  2945.         else set
  2946.         BX = which operations should disable power save (see #0408)
  2947. SeeAlso: AH=8Dh
  2948.  
  2949. Bitfields for HUNTER 16 operations disabling power save:
  2950. Bit(s)    Description    (Table 0408)
  2951.  0    INT 10h prevents power save
  2952.  1    INT 13h prevents power save
  2953.  2    INT 14h prevents power save
  2954.  3    INT 15h prevents power save
  2955.  4    INT 1Ah prevents power save
  2956.  5    INT 21h prevents power save
  2957.  6    direct write to video RAM prevents power save
  2958.  7    access to 8250 UART prevents power save
  2959.  8    access to 8253 (Sound) prevents power save
  2960. --------b-158D------------------------------------
  2961. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  2962.     AH = 8Dh
  2963.     AL = function
  2964.         00h get
  2965.         Return: AL = Fast Charge state (00h prevented, else allowed)
  2966.         nonzero set
  2967.         BH = Fast Charge state (00h prevent, nonzero allow)
  2968. Return: AH = status
  2969.         00h success
  2970.         FFh failure
  2971. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  2972. SeeAlso: AH=8Ch
  2973. --------B-1590-------------------------------
  2974. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  2975.     AH = 90h
  2976.     AL = device type (see #0409)
  2977.     ES:BX -> request block for type codes 80h through BFh
  2978.     CF clear
  2979. Return: CF set if wait time satisfied
  2980.     CF clear if driver must perform wait
  2981.         AH = 00h
  2982. Notes:    type codes are allocated as follows:
  2983.       00-7F non-reentrant devices; OS must arbitrate access
  2984.       80-BF reentrant devices; ES:BX points to a unique control block
  2985.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  2986.     floppy and hard disk BIOS code uses this call to implement a timeout;
  2987.       for device types 00h and 01h, a return of CF set means that the
  2988.       timeout expired before the disk responded.
  2989.     this function should be hooked by a multitasker to allow other tasks
  2990.       to execute while the BIOS is waiting for I/O completion; the default
  2991.       handler merely returns with AH=00h and CF clear
  2992. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  2993.  
  2994. (Table 0409)
  2995. Values for device type:
  2996.  00h    disk
  2997.  01h    diskette
  2998.  02h    keyboard
  2999.  03h    PS/2 pointing device
  3000.  21h    waiting for keyboard input (Phoenix BIOS)
  3001.  80h    network
  3002.  FBh    digital sound (Tandy)
  3003.  FCh    disk reset (PS)
  3004.  FDh    diskette motor start
  3005.  FEh    printer
  3006. --------B-1591-------------------------------
  3007. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  3008.     AH = 91h
  3009.     AL = device type (see #0409)
  3010.     ES:BX -> request block for type codes 80h through BFh
  3011.     CF clear
  3012. Return: AH = 00h
  3013. Note:    this function should be hooked by a multitasker to allow other tasks
  3014.       to execute while the BIOS is waiting for I/O completion; the default
  3015.       handler merely returns with AH=00h and CF clear
  3016. SeeAlso: AH=90h
  3017. --------x-15A100-----------------------------
  3018. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  3019.     AX = A100h
  3020. Return: AX = 0000h
  3021.     CF clear
  3022.     BX,CX,DI may be destroyed
  3023. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  3024.       locations 3Eh and 3Fh
  3025. Notes:    in the examined version of the BIOS, nonzero values in AL cause it to
  3026.       drop through to checking the next possible value of AH, i.e. only
  3027.       subfunction 00h is supported
  3028.     also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
  3029.       AMI BIOSes
  3030. ----------15B001CX5354-----------------------
  3031. INT 15 - Stac ??? - INSTALLATION CHECK
  3032.     AX = B001h
  3033.     CX = 5354h ('ST')
  3034.     DX = 4143h ('AC')
  3035. Return: AX = 4F4Bh ('OK') if installed
  3036. Note:    this function is called by Novell DOS 7 NWCACHE v1.01
  3037. --------n-15BA10-----------------------------
  3038. INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
  3039.     AX = BA10h
  3040.     BL = event
  3041.        00h the pen left control areas
  3042.        01h the pen entered the Brightness- area
  3043.        02h the pen entered the Brightness+ area
  3044.        03h the pen entered the Contrast- area
  3045.        04h the pen entered the Contrast+ area
  3046. Return: CF clear if successfully processed
  3047.     CF set on error (function not supported, ie. not an OmniShare BIOS)
  3048. Note:    The pen driver is responsible for detecting when the pen enters and
  3049.       leaves control areas of the OmniShare tablet, and notifying the BIOS.
  3050.     The BIOS manages the events, including the autorepetition, and sets
  3051.       the status LEDs.
  3052. SeeAlso: AX=BA20h,AX=BA13h
  3053. --------n-15BA11-----------------------------
  3054. INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
  3055.     AX = BA11h
  3056.     BL = new LED state (00h steady, 01h flashing)
  3057. Return: CF clear if successful
  3058.     CF set on error
  3059. Note:    this function is for use by communication software to give visual
  3060.       feedback of active communications even if the display is in standby
  3061.       mode.
  3062. SeeAlso: AX=BA10h,AX=BA24h
  3063. --------n-15BA12-----------------------------
  3064. INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
  3065.     AX = BA12h
  3066.     BL = new battery state (00h good, 01h low charge)
  3067. Return: CF set on error
  3068.     CF clear if successfully stored in CMOS
  3069. Note:    The last report will be displayed by the Power-On Self Test the next
  3070.       time the OmniShare boots.  This allows something meaningful to be
  3071.       reported even if the pen is not detected during the POST.
  3072. SeeAlso: AX=BA13h
  3073. --------n-15BA13-----------------------------
  3074. INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
  3075.     AX = BA13h
  3076. Return: CF clear if successful
  3077.         BL = pen battery state (00h good, 01h low charge)
  3078.     CF set on error
  3079. Note:    returns the last value set by AX=BA12h.
  3080. SeeAlso: AX=BA12h
  3081. --------p-15BA20-----------------------------
  3082. INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
  3083.     AX = BA20h
  3084. Return: CF clear if successful (installed)
  3085.     CF set on error (not installed)
  3086. Notes:    The display controller can enter a standby mode after a given timeout,
  3087.       to conserve power or (for the OmniShare) to increase the life of
  3088.       the backlight.
  3089.     A side effect of standby mode is that the communications LED turns on
  3090.       automatically when the display is in standby mode.  This is done in
  3091.       hardware, and is intended to show that the unit is still on.
  3092. SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
  3093. --------p-15BA21-----------------------------
  3094. INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
  3095.     AX = BA21h
  3096.     BL = new timeout before standby mode in minutes (01h-0Fh)
  3097.         00h to disable automatic switch to standby mode
  3098. Return: CF clear if successful
  3099.     CF set on error (function not supported)
  3100. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  3101.       instead of (N*60) seconds as documented.
  3102. SeeAlso: AX=BA20h,AX=BA22h
  3103. --------p-15BA22-----------------------------
  3104. INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
  3105.     AX = BA22h
  3106. Return: CF clear if successful
  3107.        BL = standy duration in minutes (01h-0Fh), or 00h if disabled
  3108.     CF set on error (function not supported)
  3109. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  3110.       instead of (N*60) seconds as documented.
  3111. SeeAlso: AX=BA20h,AX=BA21h
  3112. --------p-15BA23-----------------------------
  3113. INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
  3114.     AX = BA23h
  3115. Return: CF clear if successful
  3116.     CF set on error
  3117. SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
  3118. --------p-15BA24-----------------------------
  3119. INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
  3120.     AX = BA24h
  3121. Return: CF clear if successful
  3122.     CF set on error
  3123. Note:    This function is not implemented yet. Reserved for future versions
  3124.       of the OmniShare.
  3125. SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
  3126. --------p-15BA25-----------------------------
  3127. INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
  3128.     AX = BA25h
  3129. Return: CF clear if successful
  3130.         AX = 25BAh
  3131.         BX = PSP of STANDBY.COM resident portion
  3132.         DX:CX -> previous INT 15 handler
  3133.     CF set on error
  3134. Note:    This function is used internally by the STANDBY.COM /u option, and
  3135.       should not be used by application programs.
  3136. SeeAlso: AX=BA20h
  3137. --------p-15BA26-----------------------------
  3138. INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
  3139.     AX = BA26h
  3140. Return: CF clear if successful
  3141.         AL    = display state (00h active, 01h in standby mode)
  3142.     CF set on error (function not supported)
  3143. SeeAlso: AX=BA20h,AX=BA23h
  3144. --------p-15BA27-----------------------------
  3145. INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
  3146.     AX = BA27h to BA2Fh
  3147. Desc:    reserved for future use
  3148. --------b-15BC-------------------------------
  3149. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  3150.     AH = BCh
  3151. Return: CF clear
  3152.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  3153.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  3154. Note:    this function reads system timer channel 0 twice, then does
  3155.       calculations on the returned values to determine the delay loop
  3156.       counter needed by the BIOS for beeps and floppy timeouts
  3157. SeeAlso: AX=2305h
  3158. --------E-15BF00-----------------------------
  3159. INT 15 - Rational Systems DOS/16M - ???
  3160.     AX = BF00h
  3161.     ???
  3162. Return: ???
  3163. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  3164. SeeAlso: AX=BF02h
  3165. --------E-15BF01-----------------------------
  3166. INT 15 - Rational Systems DOS/16M - ???
  3167.     AX = BF01h
  3168.     ???
  3169. Return: ???
  3170. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  3171.     called by DOS/4GW
  3172. SeeAlso: AX=BF00h,AX=BF02h
  3173. --------E-15BF02DX0000-----------------------
  3174. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  3175.     AX = BF02h
  3176.     DX = 0000h
  3177. Return: DX = nonzero if installed
  3178.         DX:SI -> XBRK structure (see #0410)
  3179. Note:    this function is also supported by DOS/4G
  3180. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  3181. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  3182.  
  3183. Format of DOS/16M XBRK structure:
  3184. Offset    Size    Description    (Table 0410)
  3185.  00h    DWORD    linear address of first available byte
  3186.  04h    DWORD    linear address of last available byte + 1 ???
  3187.  08h    DWORD    real-mode address of XBRK structure???
  3188.  0Ch    DWORD    ???
  3189.  10h  2 BYTEs    ???
  3190.  12h    WORD    segment of ???
  3191.  14h  8 BYTEs    ???
  3192.  1Ch 512 BYTEs    protected-mode IDT
  3193. 21Ch  N BYTEs    protected-mode GDT
  3194. --------E-15BF03-----------------------------
  3195. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  3196.     AX = BF03h
  3197.     BX = PSP segment of extender
  3198.     ???
  3199. Return: ???
  3200. Note:    if BX is not the PSP segment of the extender, it passes the call down
  3201.       the INT 15 chain; this allows nested instances of the extender
  3202. SeeAlso: AX=BF06h
  3203. --------E-15BF04-----------------------------
  3204. INT 15 - Rational Systems DOS/4GW - ???
  3205.     AX = BF04h
  3206.     BX = PSP segment of extender
  3207. Return: nothing???
  3208. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  3209.       the INT 15 chain; this allows nested instances of the extender
  3210.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  3211. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  3212. --------E-15BF05-----------------------------
  3213. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  3214.     AX = BF05h
  3215.     BX = PSP segment of extender
  3216. Return: nothing???
  3217. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  3218.       the INT 15 chain; this allows nested instances of the extender
  3219.     calls INT 67/AX=DE01h if ???
  3220. --------E-15BF06-----------------------------
  3221. INT 15 - Rational Systems DOS/4GW - ???
  3222.     AX = BF06h
  3223.     BX = PSP segment of extender
  3224.     ???
  3225. Return: ???
  3226. Note:    if BX is not the PSP segment of the extender, it passes the call down
  3227.       the INT 15 chain; this allows nested instances of the extender
  3228. SeeAlso: AX=BF03h
  3229. --------E-15BFDCDX0000-----------------------
  3230. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  3231.     AX = BFDCh
  3232.     DX = 0000h
  3233.     SI = 0000h
  3234. Return: DX = nonzero if installed
  3235.         DX:SI -> XBRK structure (see #0410)
  3236. SeeAlso: AX=BF02h
  3237. --------E-15BFDEBX0000-----------------------
  3238. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  3239.     AX = BFDEh
  3240.     BX = 0000h
  3241. Return: AX = ??? (0003h)
  3242.     BX = FFFFh
  3243. SeeAlso: AX=BF02h
  3244. --------E-15BFDEBX0001-----------------------
  3245. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  3246.     AX = BFDEh
  3247.     BX = 0001h
  3248. Return: BX = 0000h (success)
  3249.     CX:DX -> name of process manager executable
  3250. SeeAlso: AX=BFDEh/BX=0000h
  3251. --------E-15BFDEBX0002-----------------------
  3252. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  3253.     AX = BFDEh
  3254.     BX = 0002h
  3255.     CX:DX -> ???
  3256. Return: BX = 0000h (success)
  3257. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  3258. --------E-15BFDEBX0003-----------------------
  3259. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3260.     AX = BFDEh
  3261.     BX = 0003h
  3262. Return: BX = 0000h (success)
  3263.     CX:DX -> ???
  3264. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  3265. --------E-15BFDEBX0004-----------------------
  3266. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3267.     AX = BFDEh
  3268.     BX = 0004h
  3269.     CL = ???
  3270. Return: BX = 0000h (success)
  3271.     CX:DX -> XBRK structure (see #0410)
  3272. SeeAlso: AX=BFDEh/BX=0000h
  3273. --------E-15BFDEBX0005-----------------------
  3274. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3275.     AX = BFDEh
  3276.     BX = 0005h
  3277.     CX = new value for ???
  3278. Return: BX = 0000h (success)
  3279.     AX = old value of ???
  3280.     DS:SI -> ??? (if AX nonzero on return)
  3281.     ES:DI -> ??? (if AX zero on return)
  3282. Note:    called by DOS4GW.EXE
  3283. SeeAlso: AX=BFDEh/BX=0000h
  3284. --------E-15BFDEBX0006-----------------------
  3285. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3286.     AX = BFDEh
  3287.     BX = 0006h
  3288. Return: BX = 0000h (success)
  3289.     AH = interrupt number??? (BEh)
  3290.     CX:DX = ???
  3291. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  3292. --------E-15BFDEBX0007-----------------------
  3293. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  3294.     AX = BFDEh
  3295.     BX = 0007h
  3296.     CX:DX = ???
  3297. Return: BX = 0000h (success)
  3298. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  3299. --------E-15BFDEBX0008-----------------------
  3300. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3301.     AX = BFDEh
  3302.     BX = 0008h
  3303.     CX = segment of ???
  3304.     DS = ???
  3305. Return: BX = status
  3306.         0000h successful
  3307.         AL = ??? (80h or C0h)
  3308.         DX = ??? (0603h) if AL=C0h
  3309.         0001h failed
  3310.         AX = 0000h
  3311. Note:    called by DOS4GW.EXE
  3312. SeeAlso: AX=BFDEh/BX=0000h
  3313. --------E-15BFDEBX0009-----------------------
  3314. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  3315.     AX = BFDEh
  3316.     BX = 0009h
  3317. Return: BX = 0000h (success)
  3318.     CX:DX -> full pathname to LOAD32.EXP
  3319. SeeAlso: AX=BFDEh/BX=0000h
  3320. --------E-15BFDEBX000A-----------------------
  3321. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  3322.     AX = BFDEh
  3323.     BX = 000Ah
  3324. Return: BX = 0000h (success)
  3325.     AX = new value of ??? counter
  3326. Notes:    also resets a variety of values if the counter goes negative
  3327.     called by DOS4GW.EXE
  3328. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  3329. --------E-15BFDEBX000B-----------------------
  3330. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  3331.     AX = BFDEh
  3332.     BX = 000Bh
  3333. Return: AX = new value of ??? counter
  3334. Note:    called by DOS4GW.EXE
  3335. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  3336. --------E-15BFDEBX000C-----------------------
  3337. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3338.     AX = BFDEh
  3339.     BX = 000Ch
  3340.     CL = ???
  3341.         00h
  3342.         nonzero
  3343. Return: ???
  3344. SeeAlso: AX=BFDEh/BX=0000h
  3345. --------E-15BFDEBX000D-----------------------
  3346. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3347.     AX = BFDEh
  3348.     BX = 000Dh
  3349.     ???
  3350. Return: ???
  3351. SeeAlso: AX=BFDEh/BX=0000h
  3352. --------E-15BFDEBX000E-----------------------
  3353. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3354.     AX = BFDEh
  3355.     BX = 000Eh
  3356.     DX:CX -> ???
  3357. Return: AX = segment of handle for calling task
  3358.     BX = ??? (probably destroyed)
  3359.     DX:CX -> ???
  3360. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  3361. --------E-15BFDEBX000F-----------------------
  3362. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3363.     AX = BFDEh
  3364.     BX = 000Fh
  3365. Return: AX = segment of handle for calling task
  3366.     BX = ??? (probably destroyed)
  3367.     DX:CX -> ???
  3368. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  3369. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  3370. --------E-15BFDEBX0010-----------------------
  3371. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  3372.     AX = BFDEh
  3373.     BX = 0010h
  3374. Return: AX = segment of caller's task handle
  3375.     BX destroyed
  3376. SeeAlso: AX=BFDEh/BX=000Fh
  3377. --------E-15BFDEBX0011-----------------------
  3378. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3379.     AX = BFDEh
  3380.     BX = 0011h
  3381. Return: CX = code segment of DVDOS4GX.DVR
  3382.     BX = ??? (0004h)
  3383. SeeAlso: AX=BFDEh/BX=0000h
  3384. --------E-15BFDEBX0012-----------------------
  3385. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3386.     AX = BFDEh
  3387.     BX = 0012h
  3388. Return: DX = code segment of DVDOS4GX.DVR
  3389.     BX = ??? (012Ch)
  3390.     CX = ??? (0006h)
  3391. SeeAlso: AX=BFDEh/BX=0000h
  3392. --------E-15BFDEBX0013-----------------------
  3393. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3394.     AX = BFDEh
  3395.     BX = 0013h
  3396. Return: DX:CX -> ???
  3397. SeeAlso: AX=BFDEh/BX=000Eh
  3398. --------E-15BFDEBX0014-----------------------
  3399. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  3400.     AX = BFDEh
  3401.     BX = 0014h
  3402.     CX = index of ??? mailbox
  3403.         (0000h-0004h valid, but no range checking done)
  3404. Return: AX,BX destroyed
  3405. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  3406. --------E-15BFDEBX0015-----------------------
  3407. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  3408.     AX = BFDEh
  3409.     BX = 0015h
  3410.     CX = index of ??? mailbox
  3411.         (0000h-0004h valid, but no range checking done)
  3412. Return: AX,BX destroyed
  3413. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  3414. --------E-15BFDEBX0016-----------------------
  3415. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  3416.     AX = BFDEh
  3417.     BX = 0016h
  3418.     CX = index of ??? mailbox
  3419.         (0000h-0004h valid, but no range checking done)
  3420. Return: AX = status
  3421.         0000h no one owns mailbox
  3422.         0001h mailbox has an owner
  3423.     BX destroyed
  3424. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  3425. --------E-15BFDEBX0017-----------------------
  3426. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  3427.     AX = BFDEh
  3428.     BX = 0017h
  3429.     CX = index of ??? mailbox
  3430.         (0000h-0004h valid, but no range checking done)
  3431. Return: AX = segment of mailbox owner's handle
  3432.     BX = segment of caller's task handle
  3433. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  3434. --------E-15BFDEBXFFFD-----------------------
  3435. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3436.     AX = BFDEh
  3437.     BX = FFFDh
  3438. Return: CX:DX = ???
  3439. SeeAlso: AX=BFDEh/BX=FFFEh
  3440. --------E-15BFDEBXFFFE-----------------------
  3441. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  3442.     AX = BFDEh
  3443.     BX = FFFEh
  3444.     CX:DX = ???
  3445. SeeAlso: AX=BFDEh/BX=FFFDh
  3446. --------E-15BFDEBXFFFF-----------------------
  3447. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  3448.     AX = BFDEh
  3449.     BX = FFFFh
  3450. SeeAlso: AX=BFDEh/BX=0000h
  3451. --------B-15C0-------------------------------
  3452. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  3453.     AH = C0h
  3454. Return: CF set if BIOS doesn't support call
  3455.     CF clear on success
  3456.         ES:BX -> ROM table (see #0411)
  3457.     AH = status
  3458.         00h successful
  3459.         86h unsupported function
  3460. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  3461.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  3462.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  3463.       and a model byte at absolute address FE845h (see #0417)
  3464.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  3465.       a product identifier at F000h:00FAh (see #0420)
  3466.     Compaq machines can be identified by the signature string "COMPAQ" at
  3467.       F000h:FFEAh, and is preceded by additional information (see #0418)
  3468.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  3469.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  3470.       first three data bytes (model/submodel/revision) in the returned
  3471.       table
  3472.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  3473.       a laptop information record at F000h:E000h (see #0421)
  3474.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  3475.       past the end of the configuration table
  3476.     the Phoenix 386 BIOS contains a second version and date string
  3477.       (presumably the last modification for that OEM version) beginning at
  3478.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  3479.       the complete information)
  3480. SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h
  3481.  
  3482. Format of ROM configuration table:
  3483. Offset    Size    Description    (Table 0411)
  3484.  00h    WORD    number of bytes following
  3485.  02h    BYTE    model (see #0416)
  3486.  03h    BYTE    submodel (see #0416)
  3487.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  3488.  05h    BYTE    feature byte 1 (see #0412)
  3489.  06h    BYTE    feature byte 2 (see #0413)
  3490.  07h    BYTE    feature byte 3 (see #0414)
  3491.  08h    BYTE    feature byte 4 (see #0415)
  3492.  09h    BYTE    feature byte 5:
  3493.         reserved (0) (IBM)
  3494.         ??? (08h) (Phoenix 386 v1.10)
  3495.         ??? (0Fh) (Phoenix 486 v1.03 PCI)
  3496. ---AWARD BIOS---
  3497.  0Ah  N BYTEs    AWARD copyright notice
  3498. ---Phoenix BIOS---
  3499.  0Ah    BYTE    ??? (00h)
  3500.  0Bh    BYTE    major version
  3501.  0Ch    BYTE    minor version (BCD)
  3502.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  3503. ---Quadram Quad386---
  3504.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  3505.  
  3506. Bitfields for feature byte 1:
  3507. Bit(s)    Description    (Table 0412)
  3508.  7    DMA channel 3 used by hard disk BIOS
  3509.  6    2nd 8259 installed
  3510.  5    Real-Time Clock installed
  3511.  4    INT 15/AH=4Fh called upon INT 09h
  3512.  3    wait for external event (INT 15/AH=41h) supported
  3513.  2    extended BIOS area allocated (usually at top of RAM)
  3514.  1    bus is Micro Channel instead of ISA
  3515.  0    system has dual bus (Micro Channel + ISA)
  3516. SeeAlso: #0411,#0413
  3517.  
  3518. Bitfields for feature byte 2:
  3519. Bit(s)    Description    (Table 0413)
  3520.  7    reserved
  3521.  6    INT 16/AH=09h (keyboard functionality) supported (see #0484)
  3522.  5    INT 15/AH=C6h (get POS data) supported
  3523.  4    INT 15/AH=C7h (return memory map info) supported
  3524.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  3525.  2    non-8042 keyboard controller
  3526.  1    data streaming supported
  3527.  0    reserved
  3528. SeeAlso: #0411,#0414,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
  3529.  
  3530. Bitfields for feature byte 3:
  3531. Bit(s)    Description    (Table 0414)
  3532.  7-5    reserved
  3533.  4    ??? (set on 1992 PS/1's, N51SX, CL57SX, 35SX?, 40SX?)
  3534.  3    SCSI subsystem supported on system board
  3535.  2    information panel installed
  3536.  1    IML (Initial Machine Load) system
  3537.  0    SCSI supported in IML
  3538. SeeAlso: #0411,#0413,#0414
  3539.  
  3540. Bitfields for feature byte 4:
  3541. Bit(s)    Description    (Table 0415)
  3542.  7    ??? (set on N51SX, CL57SX)
  3543.  6-4    reserved
  3544.  3    ??? (set on some 1992 PS/1's, 35SX, 40SX)
  3545.  2-1    reserved
  3546.  0    ??? (set on N51SX, CL57SX, 57SX)
  3547. SeeAlso: #0411,#0414
  3548.  
  3549. (Table 0416)
  3550. Values for model/submodel/revision:
  3551. Model  Submdl  Rev    BIOS date    System
  3552.  FFh    *    *    04/24/81    PC (original)
  3553.  FFh    *    *    10/19/81    PC (some bugfixes)
  3554.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  3555.  FFh    00h    rev      ???        Tandy 1000SL
  3556.  FFh    01h    rev      ???        Tandy 1000TL
  3557.  FFh    46h    ***      ???        Olivetti M15
  3558.  FEh    *    *    08/16/82    PC XT
  3559.  FEh    *    *    11/08/82    PC XT and Portable
  3560.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  3561.                     ("x"=product ID) (see #0422)
  3562.  FEh    43h    ***      ???        Olivetti M240
  3563.  FEh    A6h    ???      ???        Quadram Quad386
  3564.  FDh    *    *    06/01/83    PCjr
  3565.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  3566.  FCh    *    *    02/25/93    Linux DOSEMU (all versions)
  3567.  FCh    00h    00h      ???        PC3270/AT
  3568.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  3569.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  3570.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  3571.  FCh    01h    00h    09/17/87    Tandy 3000
  3572.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  3573.                     ("x"=product ID) (see #0422)
  3574.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  3575.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  3576.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  3577.  FCh    01h    00h    04/09/90    AMI BIOS
  3578.  FCh    01h    20h    06/10/92    AST
  3579.  FCh    01h    30h      ???        Tandy 3000NL
  3580.  FCh    01h    ???      ???        Compaq 286/386
  3581.  FCh    02h    00h    04/21/86    PC XT-286
  3582.  FCh    02h    00h     various    Compaq LTE Lite
  3583.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  3584.  FCh    02h    00h    08/11/88    SoftWindows 1.0.1 (Power Macintosh)
  3585.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  3586.  FCh    04h    01h    05/09/87    PS/2 Model 50 (10 Mhz 286, LW-type 32)
  3587.  FCh    04h    02h      ???        PS/2 Model 50
  3588.  FCh    04h    02h    01/28/88    PS/2 Model 50Z (10 Mhz 286, LW-type 33)
  3589.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  3590.  FCh    04h    04h      ???        PS/2 Model 50Z
  3591.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  3592.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  3593.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  3594.  FCh    08h    ***      ???        Epson, unknown model
  3595.  FCh    08h    00h      ???        PS/2 Model 25/286
  3596.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  3597.  FCh    09h    00h    08/25/88    PS/2 Model 30 286 (10 Mhz, LW-type 37)
  3598.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  3599.  FCh    09h    02h    06/28/89    PS/2 Model 25 286 (10 Mhz, LW-type 37)
  3600.  FCh    0Bh    00h    12/01/89    PS/1 (LW-Type 44)
  3601.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  3602.  FCh    20h    00h    02/18/93    Compaq ProLinea
  3603.  FCh    30h    ***      ???        Epson, unknown model
  3604.  FCh    31h    ***      ???        Epson, unknown model
  3605.  FCh    33h    ***      ???        Epson, unknown model
  3606.  FCh    42h    ***      ???        Olivetti M280
  3607.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  3608.  FCh    48h    ***      ???        Olivetti M290
  3609.  FCh    4Fh    ***      ???        Olivetti M250
  3610.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  3611.  FCh    51h    ***      ???        Olivetti PCS286
  3612.  FCh    52h    ***      ???        Olivetti M300
  3613.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  3614.  FCh    81h    01h      ???        "OEM machine"
  3615.  FCh    82h    01h      ???        "OEM machine"
  3616.  FCh    94h    00h      ???        Zenith 386
  3617.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  3618.  FBh    00h    01h    05/13/94    HP 200LX 2MB BIOS 1.01 A D german
  3619.  FBh    00h    02h    05/09/86    PC XT
  3620.  FBh    00h    04h    08/19/93    HP 100LX 1MB BIOS 1.04 A
  3621.  FBh    4Ch    ***      ???        Olivetti M200
  3622.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  3623.  FAh    00h    01h    12/12/86    PS/2 Model 30
  3624.  FAh    00h    02h    02/05/87    PS/2 Model 30
  3625.  FAh    01h    00h    06/26/87    PS/2 Model 25/25L (8 MHz 8086)
  3626.  FAh    30h    00h      ???        IBM Restaurant Terminal
  3627.  FAh    4Eh    ***      ???        Olivetti M111
  3628.  FAh    FEh    00h      ???        IBM PCradio 9075
  3629.  F9h    00h    00h    09/13/85    PC Convertible
  3630.  F9h    FFh    00h      ???        PC Convertible
  3631.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  3632.  F8h    00h    00h      ???        PS/2 Model 75 486 (33Mhz 486)
  3633.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  3634.  F8h    02h    00h      ???        PS/2 Model 55-5571
  3635.  F8h    04h    00h    01/29/88    PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
  3636.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  3637.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  3638.  F8h    05h    00h      ???        IBM PC 7568
  3639.  F8h    06h    00h      ???        PS/2 Model 55-5571
  3640.  F8h    07h    00h      ???        IBM PC 7561/2
  3641.  F8h    07h    01h      ???        PS/2 Model 55-5551
  3642.  F8h    07h    02h      ???        IBM PC 7561/2
  3643.  F8h    07h    03h      ???        PS/2 Model 55-5551
  3644.  F8h    09h    00h    01/29/88    PS/2 Model 70 16MHz 386DX, type 1 sysbd
  3645.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  3646.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  3647.  F8h    09h    04h    12/15/89    PS/2 Model 70 (16 Mhz 386, LW-type 33)
  3648.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  3649.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  3650.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  3651.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  3652.  F8h    0Dh    00h    06/08/88    PS/2 Model 70 386 25MHz, type 3 sys brd
  3653.  F8h    0Dh    01h    02/20/89    PS/2 Model 70 386 25MHz, type 3 sys brd
  3654.  F8h    0Dh    ???    12/01/89    PS/2 Model 70 486 25Mhz, type 3 sys brd
  3655.  F8h    0Eh    00h      ???        PS/1 486SX
  3656.  F8h    0Fh    00h      ???        PS/1 486DX
  3657.  F8h    10h    00h      ???        PS/2 Model 55-5551
  3658.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  3659.  F8h    12h    00h      ???        PS/2 Model 95 XP
  3660.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  3661.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  3662.  F8h    15h    00h      ???        PS/2 Model 90 XP
  3663.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD / 95XP486 (33MHz 486)
  3664.  F8h    17h    00h      ???        PS/2 Model 90 XP
  3665.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  3666.  F8h    19h    05h    03/15/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  3667.  F8h    19h    06h    04/04/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  3668.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  3669.  F8h    1Bh    00h    09/29/89    PS/2 Model 70 486 (25 Mhz 386DX)
  3670.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  3671.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 / 65 SX (16MHz 386SX)
  3672.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  3673.  F8h    23h    00h      ???        PS/2 Model L40 SX
  3674.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  3675.  F8h    23h    02h    02/27/91    PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
  3676.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  3677.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  3678.  F8h    26h    00h      ???        PS/2 Model 57 SX
  3679.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  3680.  F8h    26h    02h    07/03/91    PS/2 Model 57 SX (20Mhz 386SX, SCSI)
  3681.  F8h    28h    00h      ???        PS/2 Model 95 XP
  3682.  F8h    29h    00h      ???        PS/2 Model 90 XP
  3683.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  3684.  F8h    2Bh    00h      ???        PS/2 Model 90 / 90XP486 (50 MHz 486)
  3685.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  3686.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  3687.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  3688.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  3689.  F8h    2Eh    00h      ???        PS/2 Model 95 XP486 (20 Mhz 486SX)
  3690.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  3691.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  3692.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  3693.  F8h    33h    00h      ???        PS/2 Model 30-386
  3694.  F8h    34h    00h      ???        PS/2 Model 25-386
  3695.  F8h    36h    00h      ???        PS/2 Model 95 XP
  3696.  F8h    37h    00h      ???        PS/2 Model 90 XP
  3697.  F8h    38h    00h      ???        PS/2 Model 57
  3698.  F8h    39h    00h      ???        PS/2 Model 95 XP
  3699.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  3700.  F8h    40h    00h      ???        PS/2 Model 95 XP
  3701.  F8h    41h    00h      ???        PS/2 Model 77
  3702.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  3703.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  3704.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  3705.  F8h    48h    00h      ???        PS/2 Model 85
  3706.  F8h    49h    00h      ???        PS/ValuePoint 325T
  3707.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  3708.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  3709.  F8h    4Eh    00h      ???        PS/2 Model 295
  3710.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  3711.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  3712.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  3713.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  3714.  F8h    57h    00h      ???        PS/2 Model 90 XP
  3715.  F8h    58h    00h      ???        PS/2 Model 95 XP
  3716.  F8h    59h    00h      ???        PS/2 Model 90 XP
  3717.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  3718.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  3719.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  3720.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  3721.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  3722.  F8h    61h    ***      ???        Olivetti P500
  3723.  F8h    62h    ***      ???        Olivetti P800
  3724.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  3725.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21 (25 Mhz 386)
  3726.  F8h    81h    00h      ???        PS/2 Model 55-5502
  3727.  F8h    87h    00h      ???        PS/2 Model N33SX
  3728.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  3729.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  3730.  F8h    99h    00h      ???        PS/2 Model N51 SX
  3731.  F8h    F2h    30h      ???        Reply Model 32
  3732.  F8h    F6h    30h      ???        Memorex Telex
  3733.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  3734.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  3735.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  3736.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  3737.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  3738.  E4h    ???    ???      ???        Triumph Adler PC/XT
  3739.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  3740.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  3741.  D9h    ???    ???      ???        Peacock XT
  3742.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  3743.  30h    ???    ???      ???        Sperry PC
  3744.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  3745.  ???    56h    ???      ???        Olivetti, unknown model
  3746.  ???    74h    ???      ???        Olivetti, unknown model
  3747. Notes:    BIOS dates may vary without changes to the revision code, especially
  3748.       for non-IBM machines
  3749.     * This BIOS call is not implemented in these early versions or under
  3750.       Linux's DOSEMU.  Read the Model byte at F000h:FFFEh and BIOS date at
  3751.       F000h:FFF5h instead.
  3752.    ** These BIOS versions require the DASDDRVR.SYS patches.
  3753.   *** These Olivetti and Epson machines store the submodel in the byte at
  3754.     F000h:FFFDh.
  3755. SeeAlso: #0411,#0417
  3756.  
  3757. (Table 0417)
  3758. Values for Dell model byte:
  3759.  02h    Dell 200
  3760.  03h    Dell 300
  3761.  05h    Dell 220
  3762.  06h    Dell 310
  3763.  07h    Dell 325
  3764.  09h    Dell 310A
  3765.  0Ah    Dell 316
  3766.  0Bh    Dell 220E
  3767.  0Ch    Dell 210
  3768.  0Dh    Dell 316SX
  3769.  0Eh    Dell 316LT
  3770.  0Fh    Dell 320LX
  3771.  11h    Dell 425E
  3772. SeeAlso: #0411,#0416
  3773.  
  3774. Format of Compaq product information:
  3775. Address        Size    Description    (Table 0418)
  3776.  F000h:FFE4h    BYTE    product family code (first byte)
  3777.  F000h:FFE4h    BYTE    Point release number
  3778.  F000h:FFE4h    BYTE    ROM version code
  3779.  F000h:FFE4h    BYTE    product family code (second byte)
  3780.  F000h:FFE8h    WORD    BIOS type code
  3781. SeeAlso: #0419,#0421
  3782.  
  3783. Format of Hewlett-Packard ROM ID at F000h:00F8h:
  3784. Offset    Size    Description    (Table 0419)
  3785.  00h  2 BYTEs    signature "HP" (48h 50h)
  3786.  02h  2 BYTEs    00h 00h
  3787.  04h    BYTE    secondary code revision
  3788.  05h    BYTE    primary code revision
  3789.  06h    BYTE    date code, year-1960 (BCD)
  3790.  07h    BYTE    date code, week of year (BCD)
  3791. SeeAlso: #0418,#0420
  3792.  
  3793. Bitfields for Hewlett-Packard product identifier:
  3794. Bit(s)    Description    (Table 0420)
  3795.  4-0    machine code
  3796.     0 original Vectra
  3797.     1 ES/12
  3798.     2 RS/20
  3799.     3 Portable/CS
  3800.     4 ES
  3801.     5 CS
  3802.     6 RS/16
  3803.     other reserved
  3804.  7-5    CPU type
  3805.     0 = 80286
  3806.     1 = 8088
  3807.     2 = 8086
  3808.     3 = 80386
  3809.     other reserved
  3810. SeeAlso: #0419
  3811.  
  3812. Format of Toshiba laptop information:
  3813. Offset    Size    Description    (Table 0421)
  3814.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  3815.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  3816.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  3817.  18h  8 BYTEs    always zero???
  3818.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  3819. Note:    this record is located at F000h:E000h
  3820. SeeAlso: #0418,#0419
  3821.  
  3822. (Table 0422)
  3823. Values for Toshiba product ID:
  3824. model prodID   version      date       product number
  3825.  FEh    29h        ../..)..   Toshiba T1000LE
  3826.  FEh    2Ah        ../..*..   Toshiba T1000XE
  3827.  FEh    2Bh        ../..+..   Toshiba T1000SE
  3828.  FEh    2Ch        ../..,..   Toshiba T1000
  3829.  FEh    2Dh        ../..-..   Toshiba T1200F
  3830.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H
  3831.  FEh    2Eh        ../.....   Toshiba T1100+
  3832.  FCh    22h        ../.."..   Toshiba T8500
  3833.  FCh    26h        01/15&88   Toshiba T5200
  3834.  FCh    27h        ../..'..   Toshiba T5100
  3835.  FCh    28h        ../..(..   Toshiba T2000
  3836.  FCh    2Ah        12/26*89   Toshiba T1200XE
  3837.  FCh    2Bh        ../..+..   Toshiba T1600
  3838.  FCh    2Ch        ../..,..   Toshiba T3100e
  3839.  FCh    2Dh        ../..-..   Toshiba T3200
  3840.  FCh    2Fh        ../../..   Toshiba T3100
  3841.  FCh    34h    V1.50    02/04494   Toshiba T100X
  3842.  FCh    38h        ../..8..   Toshiba T2000SXe
  3843.  FCh    39h    V1.20    09/16991   Toshiba T2200SX
  3844.  FCh    39h    V1.40    10/01992   Toshiba T2200SX
  3845.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX
  3846.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  3847.  FCh    3Eh        ../..>..   Toshiba T3100SX
  3848.  FCh    3Fh        ../..?..   Toshiba T3200SX
  3849.  FCh    40h        ../..@..   Toshiba T4500C
  3850.  FCh    41h    V1.20    04/05A92   Toshiba T4500     ("T4500SXC" ???)
  3851.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  3852.  FCh    45h        01/13E93   Toshiba T4400SXC
  3853.  FCh    46h *        ../..F..   Toshiba T6400
  3854.  FCh    46h *        ../..F..   Toshiba T6400C
  3855.  FCh    5Fh    V1.40    01/18_94   Toshiba T3300SL
  3856.  FCh    69h        ../..i..   Toshiba T1900C    ("T1900CT" ???)
  3857.  FCh    6Ah    V1.30    05/19j93   Toshiba T1900     ("T1900S" ???)
  3858.  FCh    6Dh    V1.10    12/25m92   Toshiba T1850C
  3859.  FCh    6Eh    V1.00    08/19n92   Toshiba T1850
  3860.  FCh    6Eh    V1.10    12/25n92   Toshiba T1850
  3861.  FCh    6Fh    V1.00    07/17o92   Toshiba T1800
  3862.  FCh    6Fh    V1.10    12/25o92   Toshiba T1800
  3863.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  3864.  FCh    7Fh    V1.40    11/10x94   Toshiba T4600
  3865.  FCh    8Ah    V1.30    10/22x93   Toshiba T6600C
  3866.  FCh    91h    V1.20    07/15x94   Toshiba T2400CT
  3867.  FCh    91h    V5.00    07/28x95   Toshiba T2400CS/CT
  3868.  FCh    92h    V5.00    07/28x95   Toshiba T3600CT
  3869.  FCh    96h *    V1.40    12/08x94   Toshiba T200
  3870.  FCh    96h *    V1.50    12/08x94   Toshiba T200CS    (T200)
  3871.  FCh    97h        ../..x..   Toshiba T4800CT
  3872.  FCh    98h *    V1.10    12/22x93   Toshiba T1910
  3873.  FCh    98h *    V2.40    07/12x94   Toshiba T1910/CS    (T19XX)
  3874.  FCh    99h        ../..x..   Toshiba T4700CS
  3875.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  3876.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT
  3877.  FCh    9Bh    V5.00    07/28x95   Toshiba T4700CT
  3878.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT
  3879.  FCh    9Ch    V2.50    07/22x94   Toshiba T1950CT    (T19XX)
  3880.  FCh    9Dh *    V2.40    07/12x94   Toshiba T1950/CS    (T19XX)
  3881.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400
  3882.  FCh    9Eh *    V1.30    03/22x94   Toshiba T3400/CT
  3883.  FCh    B5h **    V5.10    08/25x95   Toshiba T2110/CS    (T21XX)
  3884.  FCh    B5h    V5.10    08/25x95   Toshiba T2130CS/CT    (T21XX)
  3885.  FCh    BAh    V1.30    02/16x95   Toshiba T2150CDS/CDT
  3886.  FCh    BAh    V5.00    07/27x95   Toshiba T2150CDS/CDT (T2150)
  3887.  FCh    BBh **    V1.30    01/25x95   Toshiba T2100/CS/CT
  3888.  FCh    BBh **    V5.00    07/27x95   Toshiba T2100/CS/CT
  3889.  FCh    BCh    V1.20    12/05x94   Toshiba T2450CT
  3890.  FCh    BCh    V5.00    07/28x95   Toshiba T2450CT
  3891.  FCh    BEh    V5.00    07/28x95   Toshiba T4850CT
  3892.  FCh    C0h    V5.20    05/30x96   Toshiba 420CDS/CDT
  3893.  FCh    C1h    V5.20    03/27x96   Toshiba 100CS
  3894.  FCh    C3h    V5.60    07/19x96   Toshiba 710CDT / 720CDT
  3895.  FCh    C6h    V5.30    11/30x95   Toshiba 410CS/CDT
  3896.  FCh    CAh    V5.10    08/18x95   Toshiba 400CS/CDT
  3897.  FCh    CAh    V5.40    12/18x95   Toshiba 400CS/CDT
  3898.  FCh    CBh    V5.10    09/01x95   Toshiba 610CT
  3899.  FCh    CCh    V5.50    06/13x96   Toshiba 700CS/CT
  3900.  FCh    CFh    V5.00    08/07x95   Toshiba T4900CT
  3901.  FCh    DCh    V5.10    06/17x96   Toshiba 650CT
  3902.  FCh    DCh    V5.10    05/10x96   Toshiba 110CS/CT
  3903.  FCh    DDh    V5.10    05/10x96   Toshiba 110CS/CT
  3904.  FCh    DFh    V5.20    05/27x96   Toshiba 500CS/CDT
  3905.  FCh    ???    V5.???    ../..x..   Toshiba 620CT
  3906.  FCh    ???    V5.???    ../..x..   Toshiba 660CDT
  3907.  FCh    ???    V5.30    11/22/96   Toshiba 730CDT
  3908.  FCh    ???    V6.00    09/20/96   Toshiba 200CDS/CDT
  3909.  FCh    ???    V6.20    11/14/96   Toshiba 430CDS/CDT
  3910.  FCh    ???    V6.40    12/05/96   Toshiba 510CS/CDT
  3911. Notes:    the 8-bit ASCII graphics character in the "date" column above
  3912.       has been substituted by "x" if larger than 80h
  3913.     BIOS version numbers and dates may vary, esp. due to harddisk and
  3914.       (flash) BIOS upgrades; all BIOS versions 5.xx are flash updates
  3915.       for Windows 95, the product number may indicate the series only
  3916.       (T21XX) or does no longer contain the exact type suffix (CS/CT)
  3917.     the most recent versions of the BIOS have stopped including the
  3918.       product ID code in the BIOS date
  3919.     [*] These models have monochrome and color versions which can be
  3920.       distinguished with INT 42/AX=7503h (WD90C24 chipset)
  3921.     [**] These models have monochrome and color versions which can be
  3922.       distinguished with INT 10/AX=5F50h (CT655xx chipset)
  3923.     models not found here like T21x5 are variants differing only in
  3924.       bundled software
  3925. SeeAlso: #0416
  3926. --------B-15C1-------------------------------
  3927. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  3928.     AH = C1h
  3929. Return: CF set on error
  3930.     CF clear if successful
  3931.         ES = segment of data area
  3932. SeeAlso: AH=04h"ABIOS"
  3933. --------M-15C200-----------------------------
  3934. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  3935.     AX = C200h
  3936.     BH = new state
  3937.         00h disabled
  3938.         01h enabled
  3939. Return: CF set on error
  3940.     AH = status (see #0423)
  3941.  
  3942. (Table 0423)
  3943. Values for pointing device function status:
  3944.  00h    successful
  3945.  01h    invalid function
  3946.  02h    invalid input
  3947.  03h    interface error
  3948.  04h    need to resend
  3949.  05h    no device handler installed
  3950. --------M-15C201-----------------------------
  3951. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  3952.     AX = C201h
  3953. Return: CF set on error
  3954.         AH = status (see #0423)
  3955.     CF clear if successful
  3956.         BH = device ID
  3957.         BL = value returned by attached device after reset
  3958.         AAh if device is a mouse
  3959. Note:    after successful completion of this call, the pointing device is set
  3960.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  3961.       scaling 1:1, unchanged data package size
  3962. SeeAlso: INT 33/AX=0000h
  3963. --------M-15C202-----------------------------
  3964. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  3965.     AX = C202h
  3966.     BH = sampling rate
  3967.         00h 10/second
  3968.         01h 20/second
  3969.         02h 40/second
  3970.         03h 60/second
  3971.         04h 80/second
  3972.         05h 100/second
  3973.         06h 200/second
  3974. Return: CF set on error
  3975.         AH = status (see #0423)
  3976. SeeAlso: INT 33/AX=001Ch
  3977. --------M-15C203-----------------------------
  3978. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  3979.     AX = C203h
  3980.     BH = resolution (see #0424)
  3981. Return: CF set on error
  3982.         AH = status (see #0423)
  3983.  
  3984. (Table 0424)
  3985. Values for pointing device resolution:
  3986.  00h    one count per mm
  3987.  01h    two counts per mm
  3988.  02h    four counts per mm
  3989.  03h    eight counts per mm
  3990. --------M-15C204-----------------------------
  3991. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  3992.     AX = C204h
  3993. Return: CF set on error
  3994.         AH = status (see #0423)
  3995.     CF clear if successful
  3996.         BH = device ID
  3997. --------M-15C205-----------------------------
  3998. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  3999.     AX = C205h
  4000.     BH = data package size (1 - 8 bytes)
  4001. Return: CF set on error
  4002.         AH = status (see #0423)
  4003. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  4004.       resolution 4 counts/mm, scaling 1:1
  4005. SeeAlso: AX=C201h
  4006. --------M-15C206-----------------------------
  4007. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  4008.     AX = C206h
  4009.     BH = subfunction
  4010.         00h return device status
  4011.         Return: BL = pointing device status (see #0425)
  4012.             CL = resolution (see #0424)
  4013.             DL = sample rate, reports per second
  4014.         01h set scaling at 1:1
  4015.         02h set scaling at 2:1
  4016. Return: CF set on error
  4017.         AH = status (see #0423)
  4018.  
  4019. Bitfields for pointing device status:
  4020. Bit(s)    Description    (Table 0425)
  4021.  0    right button pressed
  4022.  1    reserved
  4023.  2    left button pressed
  4024.  3    reserved
  4025.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  4026.  5    device enabled
  4027.  6    0 if stream mode, 1 if remote mode
  4028.  7    reserved
  4029. --------M-15C207-----------------------------
  4030. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  4031.     AX = C207h
  4032.     ES:BX -> FAR user device handler or 0000h:0000h to cancel
  4033. Return: CF set on error
  4034.         AH = status (see #0423)
  4035. Note:    when the subroutine is called, it is passed the following values on
  4036.       the stack; the handler should return with a FAR return without
  4037.       popping the stack:
  4038.         WORD 1: status (see #0426)
  4039.         WORD 2: X data (high byte = 00h)
  4040.         WORD 3: Y data (high byte = 00h)
  4041.         WORD 4: 0000h
  4042. SeeAlso: INT 33/AX=000Ch
  4043.  
  4044. Bitfields for pointing device status:
  4045. Bit(s)    Description    (Table 0426)
  4046.  15-8    reserved (0)
  4047.  7    Y data overflowed
  4048.  6    X data overflowed
  4049.  5    Y data is negative
  4050.  4    X data is negative
  4051.  3    reserved (1)
  4052.  2    reserved (0)
  4053.  1    right button pressed
  4054.  0    left button pressed
  4055. --------B-15C3------------------------------
  4056. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  4057.     AH = C3h
  4058.     AL = function
  4059.         00h disable PS/2 watchdog timer
  4060.         01h enable PS/2 watchdog timer
  4061.         BX = timer counter (0001h-00FFh)
  4062.         02h disable Gearbox system
  4063.         03h enable Gearbox system
  4064. Return: CF set on error
  4065.     CF clear if successful
  4066. Note:    the watchdog timer generates an NMI
  4067. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  4068. --------B-15C4-------------------------------
  4069. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  4070.     AH = C4h
  4071.     AL = subfunction
  4072.         00h return base POS register address
  4073.         01h enable selected slot for setup
  4074.         BL = slot number (1 to 8)
  4075.         02h disable setup for all slots (enable adapter)
  4076. Return: CF set on error
  4077.     DX = base POS register address (if subfunction 00h)
  4078. SeeAlso: AH=C6h
  4079. --------B-15C5-------------------------------
  4080. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  4081.     AH = C5h
  4082.     AL = interrupt being invoked
  4083.         01h INT 19
  4084.         02h INT 14
  4085.         03h INT 16
  4086.         04h INT 40 (floppy INT 13)
  4087.         05h INT 17
  4088.         06h INT 10
  4089.         07h INT 12
  4090.         08h INT 11
  4091.         09h INT 1A
  4092. Return: all registers except AX must be preserved
  4093. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  4094.       handlers on the PS/2 Models 30/286, 50Z, and 95
  4095.     default handler does nothing and returns CF clear for the above
  4096.       subfunctions, CF set and AH=86h for all other subfunctions
  4097.     value of AX passed to the original interrupt handler is pushed on
  4098.       stack immediately prior to call
  4099. --------B-15C6-------------------------------
  4100. INT 15 U - later PS/2 models - GET POS DATA
  4101.     AH = C6h
  4102.     ???
  4103. Return: ???
  4104. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  4105.     IBM reports that "there are a number of problems with this call" and
  4106.       does not recommend its use.
  4107. SeeAlso: AH=C4h
  4108. --------B-15C7-------------------------------
  4109. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  4110.     AH = C7h
  4111.     DS:SI -> user supplied memory map table (see #0427)
  4112. Note:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  4113.       function is supported
  4114. Return: CF set on error, clear if successful
  4115. SeeAlso: AH=C0h,AH=C9h,AH=D1h
  4116.  
  4117. Format of memory-map table structure:
  4118. Offset    Size    Description    (Table 0427)
  4119.  00h    WORD    length of table (excluding this word)
  4120.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  4121.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  4122.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  4123.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  4124.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  4125.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  4126.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  4127.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  4128.  22h  2 DWORDs    reserved
  4129. --------B-15C8-------------------------------
  4130. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  4131.     AH = C8h
  4132.     AL = function
  4133.         00h disable cache or (90 and 95) disable cache L1
  4134.         01h enable cache or (90 and 95) enable cache L1
  4135.         ---models 90 and 95 only---
  4136.         02h disable L2 cache
  4137.         03h enable L2 cache
  4138.         04h disable both caches
  4139.         05h enable both caches
  4140.         06h return status of both caches
  4141.         07h-FFh Reserved
  4142. Return: CF set on error
  4143.     CF clear if successful
  4144.         AH = status (see #0428)
  4145.     For subfunction 06h only:
  4146.         BH = status of cache L2
  4147.         00h enabled
  4148.         01h disabled or not installed
  4149.         BL = status of cache L1 (same codes as BH)
  4150. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  4151.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  4152.       function is supported.
  4153.     on a 486 system, any external caches must be disabled when the
  4154.       on-chip cache (L1) is disabled.
  4155. SeeAlso: AH=C0h
  4156.  
  4157. (Table 0428)
  4158. Values for status:
  4159.  00h    operation successful
  4160.  01h    function choice (in AL) is invalid
  4161.  02h    NVRAM data is invalid
  4162.  03h    cache test error
  4163.  04h    (90 and 95 only) cannot perform operation requested due to state of
  4164.       other cache (also see note above)
  4165.  05h    no L2 cache is present
  4166.  09h    CPU in protected mode
  4167. --------B-15C9-------------------------------
  4168. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  4169.     AH = C9h
  4170.     AL = 10h (may be required on some non-PS BIOSes)
  4171. Return: CF clear if successful
  4172.         AH = 00h
  4173.         CH = CPU type (see #0429)
  4174.         CL = mask revision (stepping level) (see #0430)
  4175.     CF set on error
  4176.         AH = status (80h,86h = function not supported)
  4177. Notes:    the BIOS must save DX at startup in order to be able to support this
  4178.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  4179.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  4180. SeeAlso: AX=DA92h
  4181.  
  4182. (Table 0429)
  4183. Values for CPU type:
  4184.  03h    80386DX or clone
  4185.  04h    80486
  4186.  05h    Pentium
  4187.  23h    80386SX or clone
  4188.  33h    Intel i376
  4189.  43h    80386SL or clone
  4190.  A3h    IBM 386SLC
  4191.  A4h    IBM 486SLC
  4192.  
  4193. (Table 0430)
  4194. Values for stepping level:
  4195. ---i376 (type code 33h)---
  4196.  05h    A0
  4197.  08h    B
  4198. ---80386/80386DX (type code 03h)---
  4199.  03h    Intel B1 to B10, Am386DX/DXL step A
  4200.  05h    Intel D0
  4201.  08h    Intel D1/D2/E1, Am386DX/DXL step B
  4202. ---80386SL (type code 43h)---
  4203.  05h    A
  4204.  1xh    B
  4205. ---80386SX (type code 23h)---
  4206.  04h    Intel A0
  4207.  05h    Intel B, Am386SX/SXL step A1
  4208.  08h    Intel C/D1, Am386SX/SXL step B
  4209.  09h    Intel 386CX/386EX/386SXstatic step A
  4210. ---80486DX (type code 04h)---
  4211.  00h    Intel A0/A1
  4212.  01h    Intel B2 to B6
  4213.  02h    Intel C0
  4214.  03h    Intel C1
  4215.  04h    Intel D0
  4216.  10h    Intel cA2/cA3, Cx486SLC step A
  4217.  11h    Intel cB0/cB1
  4218. ---486DX2 (type code 04h)---
  4219.  02h    Am486DX2 (unknown stepping)
  4220.  32h    Intel DX2/Overdrive steps A0 to A2
  4221.  33h    Intel DX2/Overdrive step B1
  4222. ---486SX (type code 04h)---
  4223.  20h    Intel A0
  4224.  22h    Intel B0
  4225.  27h    Intel cA0
  4226.  28h    Intel cB0
  4227. ---486SL (type code 04h)---
  4228.  40h    Intel A
  4229. ---IntelSX2 (type code 04h)---
  4230.  5xh    Intel A
  4231. ---IntelDX4 (type code 04h)---
  4232.  8xh    Intel A
  4233. ---487SX (type code 04h)---
  4234.  20h    Intel A0
  4235.  21h    Intel B0
  4236. ---Pentium (type code 05h)---
  4237.  0xh    Intel P5 steps Ax (1993)
  4238.  1xh    Intel P5 steps Bx (1994)
  4239.  2xh    Intel P54C step A
  4240. ---RapidCAD (type code 03h)---
  4241.  40h    A
  4242. --------B-15CA-------------------------------
  4243. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  4244.     AH = CAh
  4245.     AL = function
  4246.         00h read CMOS
  4247.         Return: CL = value of CMOS location
  4248.         01h write CMOS
  4249.         CL = new value for CMOS location
  4250.     BL = CMOS location (0Eh-3Fh)
  4251. Return: CF clear if successful
  4252.         AH = 00h
  4253.     CF set on error
  4254.         AH = error code (see #0431)
  4255. Note:    writes do not update the CMOS checksum
  4256.  
  4257. (Table 0431)
  4258. Values for CMOS read/write error code:
  4259.  01h    CMOS lost power or has invalid checksum
  4260.  03h    specified location out of range (too high)
  4261.  04h    specified location out of range (too low)
  4262.  80h    unsupported function (PC)
  4263.  86h    unsupported function (XT)
  4264. --------B-15CB-------------------------------
  4265. INT 15 U - PS/2 Model 95 - RESERVED
  4266.     AH = CBh
  4267.     ???
  4268. Return: ???
  4269. --------B-15CC-------------------------------
  4270. INT 15 U - PS/2 Model 95 - RESERVED
  4271.     AH = CCh
  4272.     ???
  4273. Return: ???
  4274. --------V-15CCCC-----------------------------
  4275. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  4276.     AX = CCCCh
  4277. Return: AX = ABCDh if installed
  4278. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  4279.       older versions have the string "VCHAD" 2 bytes after the address of
  4280.       the INT 15 handler which is hooked by all versions for the SysReq key
  4281. SeeAlso: AH=85h
  4282. --------B-15CD-------------------------------
  4283. INT 15 U - PS/2 Model 95 - RESERVED
  4284.     AH = CDh
  4285.     ???
  4286. Return: ???
  4287. --------B-15CE--BL00-------------------------
  4288. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  4289.     AH = CEh
  4290.     BL = 00h-0Eh arbitration level to be allocated
  4291.          0Fh-FFh reserved
  4292.     AL = option byte
  4293.         bit 7-1: reserved (0)
  4294.         bit 0: 0 = need DMA channel for arbitration level requested
  4295.            1 = no channel required for arbitration level
  4296. Return: CF set on error
  4297.         AH = status (80h,86h = function not supported)
  4298.     CF clear on success
  4299.         AL = channel number
  4300.         00h-07h channel number allocated for the arbiration level
  4301.         08h-FEh reserved
  4302.         FFh    no channel requested for arbitration level
  4303.         AH = status (see #0432)
  4304. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  4305.      to perform a DMA transfer operation, be sure to call this function
  4306.        first, and call AH=CFh afterward.  Failure to use this function
  4307.        can cause unpredictable results.
  4308. SeeAlso: AH=CFh
  4309.  
  4310. (Table 0432)
  4311. Values for DMA arbitration status:
  4312.  00h    success
  4313.  01h    arbitration level not available
  4314.  02h    channel not available
  4315.  03h    invalid arbitration level passed
  4316. --------B-15CF-------------------------------
  4317. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  4318.     AH = CFh
  4319.     BL = arbitration level to be deallocated (see AH=CEh)
  4320. Return: CF set on error
  4321.         AH = status (80h,86h = function not supported)
  4322.     CF clear on success
  4323.         AH = status
  4324.         00h success
  4325.         04h arbitration level not allocated
  4326. SeeAlso: AH=CEh
  4327. --------B-15D0-------------------------------
  4328. INT 15 - later PS/2s - RESERVED
  4329.     AH = D0h
  4330.     ???
  4331. Return: ???
  4332. ----------15D042BL00-------------------------
  4333. INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK
  4334.     AX = D042h
  4335.     BL = 00h
  4336. Return: CF clear if successful
  4337.     CF set on error
  4338.     AH = status
  4339.         00h successful
  4340.         EBX:ECX = signature "INTELPEP"
  4341.         EDX = BIOS update loader version
  4342.         SI = number of 2K update blocks which can be recorded in NVRAM
  4343.         86h not implemented
  4344.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4345.         00h successful
  4346. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  4347.       to install a microcode patch into the Pentium Pro processor
  4348. Notes:    this API must be called from actual real mode, not V86 mode
  4349.     at least 32K stack space must be available when this function is called
  4350. SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h
  4351. SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h
  4352. ----------15D042BL01-------------------------
  4353. INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA
  4354.     AX = D042h
  4355.     BL = 01h
  4356.     ES:DI -> microcode update block (see #0434)
  4357.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  4358. Return: CF clear if successful
  4359.     CF set on error
  4360.     AH = status (see #0433)
  4361.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4362.         00h successful
  4363. Notes:    a microcode update may also be initiated by a WRMSR instruction
  4364.       with ECX=0079h, EDX=00000000h, and EAX=linear address of update
  4365.       block (see #0434)
  4366.     at least 32K stack space must be available when this function is called
  4367. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h
  4368.  
  4369. (Table 0433)
  4370. Values for Pentium Pro BIOS update status:
  4371.  00h    successful
  4372.  86h    not implemented
  4373.  90h    unable to erase NVRAM device
  4374.  91h    unable to write to NVRAM device
  4375.  92h    unable to read storage
  4376.  93h    NVRAM is full
  4377.  94h    specified processor stepping is not present in system
  4378.  95h    invalid header or loader version
  4379.  96h    wrong checksum in header
  4380.  97h    processor rejected the update
  4381.  98h    the same or a more recent update is already stored
  4382.  99h    update block number was out of range
  4383.  
  4384. Format of Pentium Pro microcode update block:
  4385. Offset    Size    Description    (Table 0434)
  4386.  00h    DWORD    update header version number (currently 00000001h)
  4387.         FFFFFFFFh = unused block
  4388.  04h    DWORD    revision number of this microcode update
  4389.  08h    DWORD    update creation date, as BCD mmddyyyy (month,day,year)
  4390.  0Ch    DWORD    family/model/stepping of processor to which update applied
  4391.         (same value as returned by CPUID instruction)
  4392.  10h    DWORD    checksum (used to force sum of all 512 DWORDs of the update
  4393.         block to 00000000h)
  4394.  14h    DWORD    revision number of loader needed to install update
  4395.         (currently 00000001h)
  4396.  18h 24 BYTEs    reserved for future expansion
  4397.  30h 2000 BYTEs    encrypted microcode data
  4398. ----------15D042BL02-------------------------
  4399. INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL
  4400.     AX = D042h
  4401.     BL = 02h
  4402.     BH = function
  4403.         01h enable update loading at initialization time
  4404.         02h check whether update loading is enabled
  4405.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  4406. Return: CF clear if successful
  4407.     CF set on error
  4408.     AH = status (see #0433)
  4409.         00h successful
  4410.         BL = enabled/disabled flag
  4411.         86h not implemented
  4412.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4413.         00h successful
  4414. Notes:    this API must be called from actual real mode, not V86 mode
  4415.     at least 32K stack space must be available when this function is called
  4416.     there is no call to disable update loading due to security risks; the
  4417.       BIOS setup can disable loading
  4418. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h
  4419. ----------15D042BL03-------------------------
  4420. INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA
  4421.     AX = D042h
  4422.     BL = 03h
  4423.     ES:DI -> buffer for microcode update block (see #0434)
  4424.     ECX = two real-mode 64K scratchpad segments (upper and lower words)
  4425.     DX = segment of 64K scratchpad area for BIOS use
  4426.     SI = zero-based index number of update block to retrieve
  4427. Return: CF clear if successful
  4428.     CF set on error
  4429.     AH = status
  4430.         00h successful
  4431.         ES:DI buffer filled with 2048-byte update block
  4432.         86h not implemented
  4433.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4434.         00h successful
  4435. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  4436.       to install a microcode patch into the Pentium Pro processor
  4437. Notes:    this API must be called from actual real mode, not V86 mode
  4438.     at least 32K stack space must be available when this function is called
  4439. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h
  4440. --------B-15D100DX0000-----------------------
  4441. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  4442.     AX = D100h
  4443.     DX = 0000h (reserved, must set to 0)
  4444. Return: BL = size of one DDT entry, in bytes
  4445.     CX = number of DDT entries
  4446.     AH = return code (see #0435)
  4447.     CF set on error
  4448.     CF clear on success
  4449. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  4450.  
  4451. (Table 0435)
  4452. Values for return code:
  4453.  00h    success
  4454.  01h    requested DDT entry not found
  4455.  02h    DDT data not valid
  4456.  86h    function not supported
  4457. --------B-15D101-----------------------------
  4458. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  4459.     AX = D101h
  4460.     BX = number of requested entry (starting with 1)
  4461.     DX = 0000h (reserved, must be set to 0)
  4462.     ES:DI -> buffer to contain DDT entry (see #0436)
  4463. Return: AH = return code (see #0435)
  4464.     CF set on error
  4465.     CF clear on success
  4466.         ES:DI buffer filled with DDT entry
  4467. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  4468.  
  4469. Format of Device Descriptor Table (DDT):
  4470. Offset    Size    Description    (Table 0436)
  4471.  00h    BYTE    bits 7-4: reserved (set to 0)
  4472.         bits 3-0: slot of device (0 = system board)
  4473.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  4474.         bits 3-0: first interrupt for this device (0 = none)
  4475.  02h    BYTE    bits 7-4: second arbitration level for this device
  4476.         bits 3-0: first arbitration level for this device
  4477.  03h    WORD    DDT indicators (see #0437)
  4478.  05h    BYTE    reserved (0)
  4479.  06h    WORD    device ID (0 = none)
  4480.  08h    WORD    starting address of first  I/O block (0 = none)
  4481.  0Ah    WORD    starting address of second I/O block (0 = none)
  4482.  OCh    WORD    starting address of third  I/O block (0 = none)
  4483.  OEh    DWORD    start of first non-system memory block (0 = none)
  4484.  12h    WORD    size of first non-system memory block (in kilobytes)
  4485.  14h    DWORD    start of second non-system memory block (0 = none)
  4486.  18h    WORD    size of second non-system memory block (in kilobytes)
  4487.  1Ah    BYTE    implementation identifier of the device
  4488.  1Bh    BYTE    implementation revision level of the device
  4489. Note:    I/O block addresses and non-system memory addresses are listed in
  4490.       ascending order in each DDT entry.
  4491.  
  4492. Bitfields for DDT indicators:
  4493. Bit(s)    Description    (Table 0437)
  4494.  15    reserved (0)
  4495.  14    second arbitration level exists
  4496.  13    first arbitration level exists
  4497.  12    serial interface is RS-422
  4498.  11    not address limited
  4499.  10    DMA channel used
  4500.  9    second arbitration level can be shared
  4501.  8    first arbitration level can be shared
  4502.  7-0    reserved (0)
  4503. --------B-15D102-----------------------------
  4504. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  4505.     AX = D102h
  4506.     BX = entry number at which to start searching
  4507.     CX = requested I/O port address
  4508.     DX = 0000h (reserved, must be set to 0)
  4509.     ES:DI -> buffer to contain DDT entry (see #0436)
  4510. Return: AH = return code (see #0435)
  4511.     BX = DDT entry number where I/O port was found, or total entries
  4512.          plus 1 if port was not found.
  4513.     CF set on error
  4514.     CF clear on success
  4515.         ES:DI buffer filled with DDT entry
  4516. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  4517.       and the first entry in which it is found is returned
  4518. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  4519. --------B-15D103DX0000-----------------------
  4520. INT 15 - later PS/2s - RETURN ENTIRE DDT
  4521.     AX = D103h
  4522.     DX = 0000h (reserved, must be set to 0)
  4523.     ES:DI -> buffer to contain DDT entry (see #0436)
  4524. Return: AH = return code (see #0435)
  4525.     CF set on error
  4526.     CF clear on success
  4527.         ES:DI buffer filled with DDT entry
  4528. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  4529. --------B-15D104-----------------------------
  4530. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  4531.     AX = D104h
  4532.     BX = entry number at which to start searching
  4533.     CX = requested device ID
  4534.     DX = 0000h (reserved, must be set to 0)
  4535.     ES:DI -> buffer to contain DDT entry (see #0436)
  4536. Return: AH = return code (see #0435)
  4537.     BX = DDT entry number where device ID was found, or total entries
  4538.           plus 1 if port was not found.
  4539.     CF set on error
  4540.     CF clear on success
  4541.         ES:DI buffer filled with DDT entry
  4542. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  4543.       and the first entry in which it is found is returned.
  4544. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  4545. --------B-15D2-------------------------------
  4546. INT 15 - later PS/2s - RESERVED
  4547.     AH = D2h
  4548.     ???
  4549. Return: ???
  4550. --------B-15D3-------------------------------
  4551. INT 15 - later PS/2s - RESERVED
  4552.     AH = D3h
  4553.     ???
  4554. Return: ???
  4555. --------B-15D4-------------------------------
  4556. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  4557.     AH = D4h
  4558.     DL = logical fixed disk drive number
  4559. Return: AH = return code (see #0438)
  4560.     CF set on error
  4561.     CF clear on success
  4562.         AL = physical fixed disk drive number
  4563.  
  4564. (Table 0438)
  4565. Values for return code:
  4566.  00h    success
  4567.  01h    specified logical drive number is invalid
  4568.  80h    function not supported (on PCjr and PC)
  4569.  86h    function not supported
  4570. --------B-15D5-------------------------------
  4571. INT 15 - later PS/2s - RESERVED
  4572.     AH = D5h
  4573.     ???
  4574. Return: ???
  4575. --------B-15D600BL00-------------------------
  4576. INT 15 - later PS/2s - READ BOOT DEVICE ID
  4577.     AX = D600h
  4578.     BL = 00h
  4579.     DX = device ID
  4580. Return: CF clear if successful
  4581.         AH = 00h
  4582.     CF set on error
  4583.         AH = status (86h for function not supported)
  4584. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  4585. --------B-15D600BL01-------------------------
  4586. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  4587.     AX = D600h
  4588.     BL = 01h
  4589.     DX = device ID
  4590. Return: CF clear on success
  4591.         AH = 00h
  4592.     CF set on error
  4593.         AH = status (86h for function not supported)
  4594. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  4595. --------B-15D601BL00-------------------------
  4596. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  4597.     AX = D601h
  4598.     BL = 00h
  4599.     DX = device ID
  4600. Return: CF clear on success
  4601.         AH = 00h
  4602.     CF set on error
  4603.         AH = status (86h for function not supported)
  4604. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  4605. --------B-15D601BL01-------------------------
  4606. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  4607.     AX = D601h
  4608.     BL = 01h
  4609.     DX = device ID
  4610. Return: CF clear on success
  4611.         AH = 00h
  4612.     CF set on error
  4613.         AH = status (86h for function not supported)
  4614. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  4615. --------B-15D602-----------------------------
  4616. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  4617.     AX = D602h
  4618. Return: CF clear on success
  4619.         AH = 00h
  4620.         AL = status of reference-partition boot request
  4621.         00h boot not requested
  4622.         01h boot requested
  4623.     CF set on error
  4624.         AH = status (86h for function not supported)
  4625. SeeAlso: AX=D601h/BL=00h
  4626. --------X-15D800-----------------------------
  4627. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  4628.     AX = D800h
  4629.     CL = slot number (including embedded and virtual)
  4630. Return: CF clear if successful
  4631.         AH = 00h
  4632.     CF set on error
  4633.         AH = error code (80h,82h,83h,86h,87h)(see #0440)
  4634.     AL = bit flags (see #0439)
  4635.     BH = major revision level of configuration utility
  4636.     BL = minor revision level of configuration utility
  4637.     CX = checksum of configuration file
  4638.     DH = number of device functions
  4639.     DL = combined function information byte
  4640.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  4641. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  4642. SeeAlso: AX=D801h,AX=D804h
  4643.  
  4644. Bitfields for EISA AL bit flags:
  4645. Bit(s)    Description    (Table 0439)
  4646.  7    set if duplicate IDs
  4647.  6    set if product ID readable
  4648.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  4649.  0-3    duplicate ID number if bit 7 set
  4650.  
  4651. (Table 0440)
  4652. Values for EISA error code:
  4653.  80h    invalid slot number
  4654.  81h    invalid function number
  4655.  82h    EISA CMOS corrupt
  4656.  83h    empty slot
  4657.  84h    error clearing CMOS
  4658.  85h    EISA CMOS is full
  4659.  86h    invalid BIOS-FW function call
  4660.  87h    invalid system configuration
  4661.  88h    config utility version not supported
  4662. --------X-15D801-----------------------------
  4663. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  4664.     AX = D801h
  4665.     CH = function number to read
  4666.     CL = slot number (including embedded and virtual)
  4667.     DS:SI -> 320-byte buffer for standard configuration data block
  4668. Return: CF clear if successful
  4669.         AH = 00h
  4670.         DS:SI buffer filled
  4671.     CF set on error
  4672.         AH = error code (80h-83h,86h,87h) (see #0440)
  4673.     BX destroyed
  4674. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  4675. --------X-15D802-----------------------------
  4676. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  4677.     AX = D802h
  4678.     BH = EISA config utility major revision level
  4679.     BL = EISA config utility minor revision level
  4680. Return: CF clear if successful
  4681.         AH = 00h
  4682.     CF set on error
  4683.         AH = error code (84h,86h,88h) (see #0440)
  4684. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  4685. SeeAlso: AX=D803h
  4686. --------X-15D803-----------------------------
  4687. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  4688.     AX = D803h
  4689.     CX = length of data structure (0000h = empty slot)
  4690.         includes two bytes for config file checksum
  4691.     DS:SI -> configuration data
  4692. Return: CF clear if successful
  4693.         AH = 00h
  4694.     CF set on error
  4695.         AH = error code (84h-86h) (see #0440)
  4696. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  4697. SeeAlso: AX=D802h
  4698. --------X-15D804-----------------------------
  4699. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  4700.     AX = D804h
  4701.     CL = slot number (including embedded and virtual)
  4702. Return: CF clear if successful
  4703.         AH = 00h
  4704.     CF set on error
  4705.         AH = error code (80h,83h,86h) (see #0440)
  4706.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  4707. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  4708. SeeAlso: AX=D800h
  4709. --------b-15D820-----------------------------
  4710. INT 15 - Compaq LTE Lite - GET ???
  4711.     AX = D820h
  4712.     DS:SI -> 17-byte buffer for ???
  4713. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  4714.       it is greater than 10h, in which case the second byte is 00h and no
  4715.       other data is returned)
  4716. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  4717.       486/486c/486cx and recent DESKPRO/i ROMs
  4718. SeeAlso: AX=D821h
  4719. --------b-15D821-----------------------------
  4720. INT 15 - Compaq LTE Lite - SET ???
  4721.     AX = D821h
  4722.     DS:SI -> counted string (should not be more than 16 bytes)
  4723. Return: AH = 00h
  4724. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  4725.       486/486c/486cx and recent DESKPRO/i ROMs
  4726. SeeAlso: AX=D820h
  4727. --------b-15D822BL00-------------------------
  4728. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  4729.     AX = D822h
  4730.     BL = 00h
  4731.     CX = size of buffer or 0000h to retrieve required buffer size
  4732.     DS:SI -> buffer for ??? (if CX nonzero)
  4733. Return: CF clear if successful
  4734.         AH = 00h
  4735.         DH = 08h
  4736.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  4737.         DS:SI buffer filled (if CX nonzero on entry)
  4738.     CF set on error (BL nonzero)
  4739.         AH = 86h
  4740. --------b-15D823-----------------------------
  4741. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4742.     AX = D823h
  4743.     BL = subfunction??? (00h or 80h)
  4744.     BH = ???
  4745.     DS:SI -> buffer for ??? (see #0441)
  4746. Return: CF clear if successful
  4747.         AH = 00h
  4748.         DH = 08h
  4749.         DL = ???
  4750.     CF set on error
  4751.         AH = error code
  4752.         86h BL neither 00h nor 80h
  4753.         87h ???
  4754.  
  4755. Format of Compaq EISA buffer:
  4756. Offset    Size    Description    (Table 0441)
  4757.  00h    BYTE    ???
  4758.  01h    WORD    ???
  4759.  03h    BYTE    ???
  4760.  04h    WORD    ???
  4761.  06h    WORD    ???
  4762.     ???
  4763. ----------15D824-----------------------------
  4764. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4765.     AX = D824h
  4766.     CX = ???
  4767.     DS:SI -> ASCIZ string containing ???
  4768. Return: CF clear if successful
  4769.         AH = 00h
  4770.         CX = ???
  4771.     CF set on error
  4772.         AH = error code
  4773.         87h ??? failed
  4774.         88h ???
  4775. Note:    these functions are only available if ??? from keyboard controller
  4776.       command C0h
  4777. ----------15D825-----------------------------
  4778. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4779.     AX = D825h
  4780.     CX = ???
  4781.     SI = ???
  4782.     DI = ???
  4783.     ???
  4784. Return: CF clear if successful
  4785.         AH = 00h
  4786.         CX = ???
  4787.     CF set on error
  4788.         AH = error code
  4789.         87h ??? failed
  4790.         88h ???
  4791.             CX = ???
  4792. Note:    these functions are only available if ??? from keyboard controller
  4793.       command C0h
  4794. ----------15D826-----------------------------
  4795. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4796.     AX = D826h
  4797.     BX = ???
  4798.     CX = size of buffer in bytes
  4799.     DS:SI -> buffer for ???
  4800.     ???
  4801. Return: CF clear if successful
  4802.         AH = 00h
  4803.         CX = ???
  4804.     CF set on error
  4805.         AH = error code
  4806.         87h ??? failed
  4807.         88h ???
  4808. Note:    these functions are only available if ??? from keyboard controller
  4809.       command C0h
  4810. --------X-15D8-------------------------------
  4811. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  4812.     AH = D8h
  4813.     AL = 80h to 84h
  4814.     other registers as appropriate for AL=00h to 04h
  4815. Return: as appropriate for AL=00h to 04h
  4816. Note:    these functions are identical to AX=D800h to D804h, except that they
  4817.       should be called when using 32-bit CS addressing mode (pointers use
  4818.       ESI rather than SI as offset) instead of 16-bit addressing mode
  4819. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  4820. --------b-15D8-------------------------------
  4821. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  4822.     AH = D8h
  4823.     AL = A0h to A6h
  4824.     other registers as appropriate for AL=20h to 26h
  4825. Return: as appropriate for AL=20h to 26h
  4826. Note:    these functions are identical to AX=D820h to D826h, except that they
  4827.       should be called when using 32-bit CS addressing mode
  4828. ----------15DA-------------------------------
  4829. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  4830.     AH = DAh
  4831.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  4832.     other registers vary by function
  4833. Return: CF clear if successful
  4834.         varies by function
  4835.     CF set on error
  4836.         AH = error code (86h unsupported [sub]function)
  4837. Note:    functions not listed above always return CF set and AH=86h; in the
  4838.       examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
  4839.       always return CF set and AH=86h
  4840. SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
  4841. --------b-15DA00-----------------------------
  4842. INT 15 U - AMI PCI BIOS - ???
  4843.     AX = DA00h
  4844.     CL = subfunction
  4845.         00h ???
  4846.         01h ???
  4847.         02h get ???
  4848.     ???
  4849. Return: CF clear if successful
  4850.         ???
  4851.     CF set on error
  4852.         AH = error code (86h unsupported subfunction)
  4853. Note:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
  4854.       failure
  4855. SeeAlso: AX=DA01h
  4856. --------b-15DA01-----------------------------
  4857. INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
  4858.     AX = DA01h
  4859.     CL = subfunction (00h-02h)
  4860.         00h set low CPU speed
  4861.         01h set high CPU speed
  4862.         02h get current CPU speed
  4863. Return: CF clear if successful
  4864.         AH = current/new CPU speed (00h low, 01h high)
  4865.         AL = ??? (00h)
  4866.     CF set on error
  4867.         AH = error code (86h unsupported subfunction)
  4868. Notes:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
  4869.       protected and V86 modes due to a test of MSW bit 0
  4870.     setting the CPU speed also generates the same audible signals generated
  4871.       when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
  4872. BUG:    the BIOS apparently intends to return CF set if ???, but fails to use
  4873.       a different exit path in that case, resulting in CF clear
  4874. ----------15DA05-----------------------------
  4875. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  4876.     AX = DA05h
  4877.     ES:SI -> 8-byte buffer for ??? and BIOS revision strings
  4878. Return: CF clear
  4879.     ES:SI buffer filled
  4880.     AL = 00h
  4881.     CX = ??? (0000h)
  4882. Notes:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  4883.       string is "AX1 "
  4884. SeeAlso: AX=DA15h,AX=DB04h
  4885. ----------15DA08-----------------------------
  4886. INT 15 U - AMI PCI BIOS - ???
  4887.     AX = DA08h
  4888.     ???
  4889. Return: CF clear if successful
  4890.         ???
  4891.     CF set on error
  4892.         AH = error code (86h unsupported subfunction)
  4893. Note:    in the examined v1.00.05.AX1 BIOS, this call always returns failure
  4894. ----------15DA12-----------------------------
  4895. INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
  4896.     AX = DA12h
  4897.     CL = subfunction
  4898.         00h ???
  4899.         01h    ???
  4900.         02h get ???
  4901.         03h ???
  4902.         04h ???
  4903.     ???
  4904. Return: CF clear if successful
  4905.         ???
  4906.     CF set on error
  4907.         AH = error code (86h unsupported subfunction)
  4908. Desc:    ??? performs various manipulations on system chipset registers
  4909. Notes:    subfunctions 00h and 01h are NOPs in protected and V86 modes due to
  4910.       a test of MSW bit 0
  4911.     subfunctions 00h-02h always return success
  4912. ----------15DA14-----------------------------
  4913. INT 15 U - AMI PCI BIOS - GET/SET ???
  4914.     AX = DA14h
  4915.     CL = subfunction
  4916.         00h read
  4917.         01h write
  4918.         DH = new value for ??? (00h-02h)
  4919.     DL = index of ??? (00h-03h, but not range-checked)
  4920.     ???
  4921. Return: CF clear if successful
  4922.         DH = current value of ??? if reading
  4923.     CF set on error
  4924.         AH = error code (86h unsupported subfunction)
  4925. Note:    the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
  4926.       and the values for 02h and 03h are stored in location 36h
  4927. BUG:    the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
  4928.       subfunction 01h, even though DH is never used by subfunction 00h
  4929. ----------15DA15-----------------------------
  4930. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  4931.     AX = DA15h
  4932.     ES:DI -> 8-byte buffer for ??? and BIOS revision strings
  4933. Return: CF clear
  4934.     ES:DI buffer filled
  4935.     AL = 00h
  4936. Note:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  4937.       string is "AX1 "
  4938. SeeAlso: AX=DA05h,AX=DB04h
  4939. ----------15DA19-----------------------------
  4940. INT 15 U - AMI PCI BIOS - GET/SET ???
  4941.     AX = DA19h
  4942.     CL = subfunction
  4943.         00h get first ???
  4944.         01h get second ???
  4945.         02h set first ???
  4946.         BX = ???
  4947.         DX = ???
  4948.         03h set second ???
  4949.         BX = ???
  4950.         DX = ???
  4951. Return: CF clear if successful
  4952.         AX = 0000h
  4953.         BX,DX = ??? (subfunctions 00h and 01h only)
  4954.     CF set on error
  4955.         AH = error code (86h unsupported subfunction)
  4956. Note:    the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
  4957.       locations 1Fh-22h in the v1.00.05.AX1 BIOS
  4958. --------b-15DA20-----------------------------
  4959. INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION
  4960.     AX = DA20h
  4961.     BL = subfunction
  4962.         00h set CMOS data field
  4963.         BH = CMOS data field number (00h-4Dh)
  4964.         CH = new value for bitfield (in lowest bits of register)
  4965.         01h read CMOS data field
  4966.         BH = CMOS data field number (00h-4Dh)
  4967.         Return: CH = value of bitfield
  4968.             CL = mask of valid bits
  4969.         Note:    both CL/CH shifted to move valid bits into lowest pos
  4970.         02h set CMOS byte
  4971.         CL = CMOS RAM address (00h-7Fh)
  4972.         CH = new value for CMOS byte
  4973.         03h get CMOS byte
  4974.         CL = CMOS RAM address (00h-7Fh)
  4975.         Return: CH = value of CMOS byte
  4976.         04h update CMOS checksums
  4977.         Note:    sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to
  4978.               checksum of 48h-7Dh
  4979.         05h verify CMOS checksums
  4980.         Return:    CF clear if checksums OK
  4981.                 AH = 00h
  4982.             CF set if checksum mismatch
  4983.                 AH = 01h
  4984. Return: CF clear if successful
  4985.         AH = 00h
  4986.     CF set on error
  4987.         AH = error code (86h unsupported function/data field)
  4988. Notes:    this function was not supported by the v1.00.05.AX1 BIOS, but had been
  4989.       added by 1.00.12.AX1T
  4990.     after using subfunctions 00h or 02h, the application must call
  4991.       subfunction 04h to update the checksums to prevent an error the next
  4992.       time the system is booted
  4993.  
  4994. (Table 0442)
  4995. Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier:
  4996.  ID    address    bit(s)    contents
  4997.  00h    1Ah    7-6
  4998.  01h    1Dh    7-6
  4999.  02h    6Eh    1
  5000.  03h    77h    0
  5001.  04h    77h    1
  5002.  05h    77h    2
  5003.  06h    77h    3
  5004.  07h    77h    5
  5005.  08h    77h    6
  5006.  09h    77h    7
  5007.  0Ah    78h    7    power management enabled???
  5008.  0Bh    78h    6
  5009.  0Ch    10h    7-4    first floppy drive type
  5010.  0Dh    10h    3-0    second floppy drive type
  5011.  0Eh    11h    7
  5012.  0Fh    20h    4-0    selected language for error messages/setup utility
  5013.  10h    11h    2-1
  5014.  11h    11h    4
  5015.  12h    11h    0
  5016.  13h    11h    3
  5017.  14h    13h    7
  5018.  15h    13h    6-5
  5019.  16h    13h    4-2
  5020.  17h    19h    7
  5021.  18h    19h    6
  5022.  19h    19h    5
  5023.  1Ah    19h    4
  5024.  1Bh    1Eh    2-0
  5025.  1Ch    1Bh    7-6
  5026.  1Dh    1Ch    7
  5027.  1Eh    1Ch    3
  5028.  1Fh    1Ah    5-4
  5029.  20h    1Dh    5-4
  5030.  21h    1Bh    5-4
  5031.  22h    1Ch    6
  5032.  23h    1Ch    2
  5033.  24h    1Ah    3-2
  5034.  25h    1Dh    3-2
  5035.  26h    1Bh    3-2
  5036.  27h    1Ch    5
  5037.  28h    1Ch    1
  5038.  29h    1Ah    1-0
  5039.  2Ah    1Dh    1-0
  5040.  2Bh    1Bh    1-0
  5041.  2Ch    1Ch    4
  5042.  2Dh    1Ch    0
  5043.  2Eh    50h    7-0
  5044.  2Fh    51h    7-0
  5045.  30h    52h    7-0
  5046.  31h    53h    7-0
  5047.  32h    60h    0
  5048.  33h    60h    0
  5049.  34h    60h    0
  5050.  35h    60h    0
  5051.  36h    60h    0
  5052.  37h    60h    0
  5053.  38h    60h    1
  5054.  39h    61h    7
  5055.  3Ah    60h    2
  5056.  3Bh    61h    6-4
  5057.  3Ch    61h    2-0
  5058.  3Dh    60h    7-6
  5059.  3Eh    60h    5-4
  5060.  3Fh    78h    5-4
  5061.  40h    6Eh    5
  5062.  41h    1Eh    3
  5063.  42h    6Eh    0
  5064.  43h    6Eh    2
  5065.  44h    6Fh    1-0
  5066.  45h    6Fh    1-0
  5067.  46h    28h    4-2
  5068.  47h    28h    7-5
  5069.  48h    6Eh    4
  5070.  49h    6Eh    3
  5071.  4Ah    76h    7-0
  5072.  4Bh    77h    4
  5073.  4Ch    11h    6
  5074.  4Dh    1Fh    7-0
  5075. ----------15DA88-----------------------------
  5076. INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
  5077.     AX = DA88h
  5078. Return: CF clear (successful)
  5079.     AX = 0000h
  5080.     CL:BX = extended memory size in KBytes
  5081. SeeAlso: AH=88h
  5082. ----------15DA8C-----------------------------
  5083. INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION
  5084.     AX = DA8Ch
  5085.     CL = subfunction
  5086.         00h get BIOS version string
  5087.         ES:DI -> 12-byte buffer for version string
  5088.         01h get chipset identification
  5089.         BL = what to retrieve
  5090.             (00h host/PCI bridge,01h motherboard chipset)
  5091.         ES:DI -> 12-byte buffer for chipset identification (see #0443)
  5092. Return: CF clear if successful
  5093.         ES:DI buffer filled
  5094.     CF set on error
  5095.         AH = error code (86h unsupported subfunction)
  5096. Notes:    the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
  5097.     subfunction 01h returns the five bytes read from the PCI configuration
  5098.       registers 00h-05h (see #0628), padded to 12 bytes with NULs
  5099. SeeAlso: AX=DB04h,PORT C000h"Neptune"
  5100.  
  5101. Format of AMI PCI BIOS chipset identification:
  5102. Offset    Size    Description    (Table 0443)
  5103.  00h    WORD    vendor ID (see #0629)
  5104.         8086h = Intel
  5105.  02h    WORD    device ID
  5106.         0484h (BL=01h)
  5107.         04A3h (BL=00h)
  5108.  04h    BYTE    low byte of PCI Command Register
  5109.  05h  7 BYTEs    unused (00h)
  5110. ----------15DA8E-----------------------------
  5111. INT 15 U - AMI PCI BIOS - ???
  5112.     AX = DA8Eh
  5113.     ???
  5114. Return: CF clear if successful
  5115.         ???
  5116.     CF set on error
  5117.         AH = error code (86h unsupported subfunction)
  5118. Note:    in the    v1.00.05.AX1 BIOS, this call always returns failure
  5119. ----------15DA92-----------------------------
  5120. INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
  5121.     AX = DA92h
  5122. Return: CF clear (successful)
  5123.     AL = CPU stepping (see also #0430 at INT 15/AH=C9h)
  5124.     AH = CPU model
  5125.     BL = CPU family (05h = Pentium, etc.)
  5126.     CX = external clock speed??? in BCD
  5127.         (0040h,0050h,0060h,0066h are possible return values on my
  5128.           Pentium with the Intel "Neptune" chipset)
  5129.     EAX high word destroyed
  5130. Note:    90 MHz and faster Pentium CPUs can be configured to run at 1.5 or
  5131.       2.0 times the external clock speed, i.e. a typical 90 MHz Pentium
  5132.       system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
  5133.       0060h in CX)
  5134. SeeAlso: AH=C9h
  5135. ----------15DA99-----------------------------
  5136. INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
  5137.     AX = DA99h
  5138.     CL = subfunction
  5139.         00h check if ???
  5140.         01h set ??? flag
  5141.         02h clear ??? flag
  5142. Return: CF clear if successful
  5143.         AH = ??? (00h,01h)
  5144.         AL = 00h
  5145.     CF set on error
  5146.         AH = error code (86h unsupported subfunction)
  5147. Note:    the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
  5148.       v1.00.05.AX1
  5149. --------b-15DB00-----------------------------
  5150. INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS
  5151.     AX = DB00h
  5152.     DS:SI -> parameter block (see #0444)
  5153.     ES:DI -> buffer for copied information
  5154. Return: CF clear if successful
  5155.     CF set on error
  5156.         AH = status (86h if not implemented)
  5157.     DS,ES destroyed, possibly other registers
  5158. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5159. SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
  5160.  
  5161. Format of AMI BIOS Flash ROM parameter block:
  5162. Offset    Size    Description    (Table 0444)
  5163.  00h 32 BYTEs    ASCIZ description of the file's contents
  5164.  20h    BYTE    Logical area type (see #0445)
  5165.  21h    DWORD    logical area size (overall size of area)
  5166.  25h    BYTE    flag: load from file (FF=yes, 00=no)
  5167.  26h    BYTE    flag: reboot after update (FF=yes, 00=no)
  5168.  27h    BYTE    flag: update entire image (FF=yes, 00=no)
  5169.  28h 24    BYTEs    ASCIZ logical area name (cooresponds to offset 20)
  5170.         "System BIOS"
  5171.         "Logo Data Area", etc.
  5172.  40h 15 BYTEs    ASCIZ time stamp string: MM/DD/YY-HH:MM
  5173.  4Fh    BYTE    checksum for this header (sum of all bytes except this one)
  5174.         if checksum would be 00h,01h, or FFh, it is set to 2Ah
  5175.  50h    DWORD    this file's starting address (offset in image)
  5176.  54h    DWORD    size of image chunk in this file
  5177.  58h    BYTE    logical area type - same as offset 20h
  5178.  59h    BYTE    flag: last file in chain (FF=yes, 00=no)
  5179.  5Ah  6 BYTEs    ASCIZ signature "FLASH"
  5180.  60h 16 BYTEs    ASCIZ filename of next file in chain
  5181.  70h 16 BYTEs    ASCIZ BIOS reserved string (usually version #)
  5182. Notes:    this block is identical in format to the 128-byte header on an AMI
  5183.       BIOS Update file
  5184.     for AX=DB00h, the following fields must be specified: 50h,54h,58h;
  5185.       the fields at offset 20h and 5Ah should also be set if possible
  5186.     the fields at offsets 40h and 70h will be set on return, if available
  5187. SeeAlso: #0446
  5188. --------b-15DB01-----------------------------
  5189. INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
  5190.     AX = DB01h
  5191.     CL = BIOS subsystem information identifier (see #0445)
  5192. Return: CF clear if successful
  5193.         AX = 0000h
  5194.         ES:DI -> 56-byte record describing subsystem (see #0446)
  5195.     CF set on error
  5196.         AH = status
  5197.         01h nonexistent subsystem
  5198.         86h function not supported
  5199.         AL = 00h
  5200. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5201. SeeAlso: AX=DB00h,AX=DB02h
  5202.  
  5203. (Table 0445)
  5204. Values for AMI BIOS subsystem identifier:
  5205.  00h    recovery code
  5206.  01h    system BIOS
  5207.  02h    PCI configuration data
  5208.  03h    OEM logo data area (see #0447)
  5209.  04h    system BIOS/Language Set (one system)
  5210.     configuration utility (another system)
  5211. SeeAlso: #0446
  5212.  
  5213. Format of AMI BIOS subsystem information:
  5214. Offset    Size    Description    (Table 0446)
  5215.  00h    BYTE    subsystem identifier/logical area type (see #0445)
  5216.  01h    DWORD    subsystem (FlashROM page) size in bytes
  5217.  05h    BYTE    flag: loadable from file (FFh=yes)
  5218.  06h    BYTE    flag: reboot after update (FFh=yes)
  5219.  07h    BYTE    flag: update entire image (FFh=yes)
  5220.  08h 24 BYTEs    subsystem/logical area name
  5221.  20h    BYTE    subsystem identifier???
  5222.  21h    BYTE    flag: reprogrammable if FFh
  5223.  22h    BYTE    ??? (01h,02h seen)
  5224.  23h  5 BYTEs    ??? (apparently always 00h)
  5225.  28h 16 BYTEs    BIOS reserved string (usually version number)
  5226. SeeAlso: #0444
  5227.  
  5228. Format of AMI OEM Logo data area:
  5229. Offset    Size    Description    (Table 0447)
  5230.  00h  8 BYTEs    signature
  5231.         "TEXTLOGO" if text-mode OEM logo
  5232.         8 DUP (FFh) if unused
  5233.  08h    WORD    offset of logo font definition table
  5234.  0Ah    WORD    offset of logo data
  5235.  0Ch    WORD    size of logo font table in words
  5236.  0Eh    WORD    offset of upper left corner of logo in video page
  5237.  10h    WORD    width of logo
  5238.  12h    WORD    height of logo
  5239.  14h    BYTE    reserved???
  5240.  var    var    logo font definition (16 bytes per character)
  5241.  var    var    logo data as character/attribute pairs
  5242. Note:    the attribute for the logo characters specifies which font will be used
  5243.       for that character.  If bit 3 is cleared, the normal system font is
  5244.       used; if bit 3 is set, the logo font is used, with screen colors
  5245.       adjusted to match the corresponding non-bright attribute for the
  5246.       system font
  5247. SeeAlso: #0445,#0446
  5248. --------b-15DB02-----------------------------
  5249. INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE
  5250.     AX = DB02h
  5251. Return: CF clear
  5252.     AX = 0000h
  5253.     BX = size of ROM programming code in bytes
  5254. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5255. SeeAlso: AX=DB00h,AX=DB03h
  5256. --------b-15DB03-----------------------------
  5257. INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE
  5258.     AX = DB03h
  5259.     DS:SI -> ???
  5260.     ES:DI -> buffer for Flash ROM programming code
  5261.     BX = ???
  5262.     DX = ???
  5263. Return: CF clear if successful
  5264.         AH = ???
  5265.         BX = ???
  5266.         DX = ???
  5267.     CF set on error
  5268.         AH = error code
  5269. Notes:    the entry point for the copied code (which is fully relocatable) is
  5270.       the very first byte (see #0448)
  5271.     used by FMUP.EXE, Intel's Flash Memory Update utility
  5272. SeeAlso: AX=DB00h,AX=DB02h
  5273.  
  5274. (Table 0448)
  5275. Call AMI BIOS ??? code with:
  5276.     AL = function
  5277.         00h erase Flash ROM block
  5278.         CX = ???
  5279.             bit 8: address line A16 inverted
  5280.         ???
  5281.         01h program new data into Flash ROM
  5282.         ???
  5283.         02h perform cold reboot
  5284.     DS:SI -> ??? (see #0449)
  5285.     ES:DI -> ???
  5286. Return: AH = status
  5287.         00h successful
  5288.         01h invalid function
  5289.         02h ???
  5290.         03h ???
  5291.         04h ???
  5292. Note:    DS:SI and ES:DI are ignored for function 02h
  5293.  
  5294. Format of AMI BIOS Flash ROM programming parameters:
  5295. Offset    Size    Description    (Table 0449)
  5296.  00h 32 BYTEs    ???
  5297.  20h    BYTE    BIOS section number
  5298.  21h    DWORD    length of BIOS code/data in bytes
  5299.  25h 43 BYTEs    ???
  5300.  50h    DWORD    ???
  5301.  54h 44 BYTEs    ???
  5302. SeeAlso: #0448
  5303. --------b-15DB04-----------------------------
  5304. INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
  5305.     AX = DB04h
  5306. Return: CF clear if supported
  5307.         BL:BH:DL:DH = BIOS revision string
  5308.         (e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
  5309.         CL = flag: DH valid?
  5310.         00h ignore DH; ignore DL as well if 20h (space)
  5311.         01h ignore DH if 20h (space)
  5312.         CH = BIOS status
  5313.         00h normal mode
  5314.         01h ROM recovery mode
  5315.         AL = ??? (02h)
  5316. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5317. SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
  5318. --------Q-15DE00-----------------------------
  5319. INT 15 - DESQview - GET PROGRAM NAME
  5320.     AX = DE00h
  5321. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  5322.           the "Switch Windows" menu (see #0450)
  5323. Note:    always returns AX=0000h under DESQview/X
  5324. SeeAlso: AX=DE07h
  5325.  
  5326. Format of program entry in DESQVIEW.DVO:
  5327. Offset    Size    Description    (Table 0450)
  5328.  00h    BYTE    length of name (FFh if end of file)
  5329.  01h  N BYTEs    name
  5330.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  5331.     BYTE    program type
  5332.         00h normal program
  5333.         04h divider
  5334.         80h Delete a Program
  5335.         81h Change a Program
  5336.     WORD    ??? apparently always 0000h
  5337. --------Q-15DE01-----------------------------
  5338. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  5339.     AX = DE01h
  5340. Return: nothing
  5341. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  5342.     NOP for DESQview/X
  5343. --------Q-15DE02-----------------------------
  5344. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  5345.     AX = DE02h
  5346. Return: nothing
  5347. Note:    this call is a NOP in DV 2.x
  5348. SeeAlso: AX=DE03h
  5349. --------Q-15DE03-----------------------------
  5350. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  5351.     AX = DE03h
  5352. Return: AX = ??? for current window
  5353.     BX = ??? for current window
  5354. Note:    this call is a NOP in DV 2.x
  5355. SeeAlso: AX=DE02h
  5356. --------Q-15DE04-----------------------------
  5357. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  5358.     AX = DE04h
  5359. Return: BX = bytes of common memory available
  5360.     CX = largest block available
  5361.     DX = total common memory in bytes
  5362. SeeAlso: AX=DE05h,AX=DE06h
  5363. --------Q-15DE05-----------------------------
  5364. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  5365.     AX = DE05h
  5366. Return: BX = KB of memory available
  5367.     CX = largest block available
  5368.     DX = total conventional memory in KB
  5369. SeeAlso: AX=DE04h,AX=DE06h
  5370. --------Q-15DE06-----------------------------
  5371. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  5372.     AX = DE06h
  5373. Return: BX = KB of expanded memory available
  5374.     CX = largest block available
  5375.     DX = total expanded memory in KB
  5376. SeeAlso: AX=DE04h,AX=DE05h
  5377. --------Q-15DE07-----------------------------
  5378. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  5379.     AX = DE07h
  5380. Return: AX = number of program as it appears on the "Switch Windows" menu
  5381. Note:    this API call may be made from a hardware interrupt handler
  5382. SeeAlso: AX=DE00h
  5383. --------Q-15DE08-----------------------------
  5384. INT 15 - DESQview - GET ???
  5385.     AX = DE08h
  5386. Return: AX = 0000h if ??? is not set to the current task
  5387.          0001h if ??? is set to the current task
  5388. --------Q-15DE09-----------------------------
  5389. INT 15 - DESQview - UNIMPLEMENTED
  5390.     AX = DE09h
  5391. Return: nothing (NOP in DV 1.x and 2.x)
  5392. --------Q-15DE0A-----------------------------
  5393. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  5394.     AX = DE0Ah
  5395.     BL = character
  5396. Return: character displayed, next call will display in next position (which
  5397.     wraps back to the start of the line if off the right edge of screen)
  5398. Notes:    displays character on bottom line of *physical* screen, regardless
  5399.       of current size of window (even entirely hidden)
  5400.     does not know about graphics display modes, just pokes the characters
  5401.       into display memory
  5402.     this API call may be made from a hardware interrupt handler
  5403. SeeAlso: AX=1003h
  5404. --------Q-15DE0B-----------------------------
  5405. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  5406.     AX = DE0Bh
  5407.     BL = API level minor version number
  5408.     BH = API level major version number
  5409. Return: AX = maximum API level (AH = major, AL = minor)
  5410. Notes:    if the requested API level is greater than the version of DESQview, a
  5411.       "You need a newer version" error window is popped up
  5412.     the API level defaults to 1.00, and is inherited by child tasks
  5413. --------Q-15DE0C-----------------------------
  5414. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  5415.     AX = DE0Ch
  5416.     BX = number of bytes
  5417. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  5418. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  5419.       system memory
  5420. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  5421. --------Q-15DE0D-----------------------------
  5422. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  5423.     AX = DE0Dh
  5424.     ES:DI -> previously allocated block
  5425. Return: nothing
  5426. SeeAlso: AX=1002h,AX=DE0Ch
  5427. --------Q-15DE0E-----------------------------
  5428. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  5429.     AX = DE0Eh
  5430.     ES:DI -> name to find (see #0451)
  5431.     CX = length of name
  5432. Return: BX = 0000h not found
  5433.          0001h found
  5434.         DS:SI = object handle
  5435. SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME"
  5436.  
  5437. (Table 0451)
  5438. Values for special DESQview mailbox names:
  5439.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  5440.  "DESQview/X Help Engine"
  5441.  "DESQview/X Network Server"  Network Manager
  5442.  "DESQview X Server0"    X-Windows server
  5443.  "DESQview X Server7"    X-Windows printing service
  5444.  "INBOX"        DESQview/X LPD requests
  5445.  "OUTBOX"        DESQview/X LPD responses
  5446.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  5447.  "_DVNM_"        DV/X v1.10 network manager
  5448. --------Q-15DE0F-----------------------------
  5449. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  5450.     AX = DE0Fh
  5451. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  5452. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  5453.     enables an additional mouse mode
  5454. --------Q-15DE10-----------------------------
  5455. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  5456.     AX = DE10h
  5457.     BH = scan code
  5458.     BL = character
  5459. Return: nothing
  5460. Notes:    a later read will get the keystroke as if it had been typed by the user
  5461.     multiple pushes are read last-in first-out
  5462.     if a script exists for the pushed key in the current application, the
  5463.       script will be executed
  5464.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  5465. SeeAlso: INT 16/AH=05h
  5466. --------Q-15DE11BL00-------------------------
  5467. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  5468.     AX = DE11h
  5469.     BL = 00h      viewport will not move automatically
  5470.          nonzero  viewport will move to keep cursor visible (default)
  5471. Return: nothing
  5472. --------Q-15DE12BX0000-----------------------
  5473. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  5474.     AX = DE12h
  5475.     BX = 0000h    select normal style (linefeed only moves down)
  5476.          nonzero  select C style (linefeed moves to start of next line)
  5477. Return: nothing
  5478. Note:    set on a per-task basis, and inherited from the parent task
  5479. --------Q-15DE13-----------------------------
  5480. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  5481.     AX = DE13h
  5482. Return: BX = number of calls to BEGINC or ENTERC
  5483.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  5484.           (see INT 15/AX=101Ch)
  5485. Note:    this API call may be made from within a hardware interrupt handler
  5486. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  5487. --------Q-15DE14-----------------------------
  5488. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  5489.     AX = DE14h
  5490.     ES:DI -> object
  5491. Return: BL = 00h not an object
  5492.          08h window or task
  5493.          09h mailbox
  5494.          0Ah keyboard
  5495.          0Bh timer
  5496.          0Ch objectq
  5497.          0Fh pointer
  5498.          10h panel
  5499. SeeAlso: AX=1016h
  5500. --------Q-15DE15-----------------------------
  5501. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  5502.     AX = DE15h
  5503.     BL = error handling mode
  5504.         00h post system error on all error conditions
  5505.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  5506.         messages sent to mailboxes which fail due to lack of system
  5507.         or common memory
  5508.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  5509.         calls which fail due to lack of system memory
  5510. Return: nothing
  5511. SeeAlso: AX=DE0Ch,AX=DE16h
  5512. --------Q-15DE16-----------------------------
  5513. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  5514.     AX = DE16h
  5515. Return: BL = current mode
  5516.         00h always post system error
  5517.         01h return carry flag set on failed mailbox writes
  5518.         02h return CF set on failed mailbox writes and NULL on failed
  5519.         GETMEM calls
  5520. SeeAlso: AX=DE15h
  5521. --------Q-15DE17-----------------------------
  5522. INT 15 - DESQview v2.20-2.25 - reserved
  5523.     AX = DE17h
  5524. Return: pops up "Programming error" window
  5525. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  5526. SeeAlso: AX=1117h
  5527. --------Q-15DE17-----------------------------
  5528. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  5529.     AX = DE17h
  5530.     BX = function
  5531.         0000h   get current mapping context without setting
  5532.         nonzero set new mapping context to BX
  5533. Return: BX = mapping context in effect before call
  5534. Notes:    mapping contexts determine conventional-memory addressability; setting
  5535.       a mapping context ensures that the associated program and data areas
  5536.       are in memory for access.  Usable by drivers, TSRs and shared
  5537.       programs.
  5538.     caller need not be running under DESQview
  5539.     this API call may be made from a hardware interrupt handler
  5540. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  5541. --------Q-15DE18-----------------------------
  5542. INT 15 - DESQview v2.20+ - internal - ???
  5543.     AX = DE18h
  5544.     BP = function number
  5545.         high byte must be 10h
  5546.         low byte is function
  5547.         00h set ???
  5548.             BL = ???  (00h-10h, video mode???)
  5549.             BH = value to store
  5550.         03h set ???
  5551.             BL = ??? (stored in driver)
  5552.         0Ah get ???
  5553.             ES:DI -> 18-byte buffer to hold ???
  5554. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  5555. --------Q-15DE19-----------------------------
  5556. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  5557.     AX = DE19h
  5558.     BX = number of bytes to allocate
  5559. Return: AX = 0000h successful
  5560.         ES:DI -> allocated block
  5561.          nonzero insufficient memory
  5562. Note:    this API call may be made from within a hardware interrupt handler
  5563. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  5564. --------Q-15DE1A-----------------------------
  5565. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  5566.     AX = DE1Ah
  5567.     ES:DI -> previously allocated block
  5568. Return: AX = 0000h (successful)
  5569. Note:    this function may be called from within a hardware interrupt handler
  5570. SeeAlso: AX=DE0Dh,AX=DE19h
  5571. --------Q-15DE1B-----------------------------
  5572. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  5573.     AX = DE1Bh
  5574. Return: nothing
  5575. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  5576. --------Q-15DE1C-----------------------------
  5577. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  5578.     AX = DE1Ch
  5579. Return: nothing
  5580. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  5581.       that DOS is free
  5582.     the official documentation states that this call should be paired with
  5583.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  5584.     this API call may be made from within a hardware interrupt handler
  5585. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  5586. --------Q-15DE1D-----------------------------
  5587. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  5588.     AX = DE1Dh
  5589.     DX = segment of handle for task to receive keystroke
  5590.     BL = character
  5591.     BH = scan code
  5592. Return: AX = 0000h if successful
  5593.        nonzero if receiver's keyboard buffer was full
  5594. Notes:    the key is treated as though the user had pressed it, ignoring any
  5595.       script which may be bound to the key, and using the current field
  5596.       table if the keyboard object is in field processing mode
  5597.     multiple PUTKEYs are seen in the order in which they are executed
  5598. SeeAlso: AX=DE10h
  5599. --------Q-15DE1E-----------------------------
  5600. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  5601.     AX = DE1Eh
  5602. Return: CL = actual number of rows on screen
  5603.     CH = actual number of columns on screen
  5604.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  5605. Note:    this API call may be made from a hardware interrupt handler
  5606. SeeAlso: INT 10/AH=0Fh
  5607. --------Q-15DE1F-----------------------------
  5608. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  5609.     AX = DE1Fh
  5610. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  5611. Note:    this API call may be made from within a hardware interrupt handler
  5612. SeeAlso: AX=DE13h,INT 21/AH=34h
  5613. --------Q-15DE20-----------------------------
  5614. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  5615.     AX = DE20h
  5616.     BX = segment of handle of task to interupt
  5617.     DX:CX -> FAR interrupt routine
  5618.     BP,SI,DI,DS,ES as required by interrupt routine
  5619. Return: nothing
  5620. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  5621.       making the DISPATCHINT call
  5622.     multiple "DISPATCHINT" calls are processed in the order in which they
  5623.       were executed
  5624.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  5625.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  5626.       needs to be preserved
  5627.     this API call may be made from within a hardware interrupt handler
  5628. SeeAlso: AX=1021h,AX=DE2Ah
  5629. --------Q-15DE21-----------------------------
  5630. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  5631.     AX = DE21h
  5632.     BX = new state
  5633.         0000h turn off
  5634.         nonzero turn on
  5635. Return: BX = old state of virtualization
  5636. Notes:    this API call may be made from within a hardware interrupt handler
  5637.     under DV 2.40 and 2.42, this call appears to have no effect and always
  5638.       returns a nonzero value in BX which appears to be the offset within
  5639.       the DV common memory segment of the caller's task object; it may
  5640.       only have an effect within a hardware interrupt handler
  5641. SeeAlso: AX=1117h,AX=DE17h
  5642. --------Q-15DE22-----------------------------
  5643. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  5644.     AX = DE22h
  5645.     DX = segment of task handle
  5646. Return: DX = total amount of memory in paragraphs
  5647.     BX = amount of system memory in paragraphs
  5648.     CX = largest block of system memory available in paragraphs
  5649.     AX = memory flags (see #0452)
  5650. Notes:    if the task handle is a child task, the returned values will be for the
  5651.       process containing the task, rather than the task itself
  5652.     if the process's system memory is swapped out, BX,CX,DX remain
  5653.       unchanged, because the memory usage cannot be determined
  5654. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  5655.  
  5656. Bitfields for DESQview process memory flags:
  5657. Bit(s)    Description    (Table 0452)
  5658.  0    system memory resides in shared memory
  5659.  1    process's memory is swapped out
  5660.  2    process's system memory is swapped out
  5661. --------Q-15DE23-----------------------------
  5662. INT 15 U - DESQview v2.31+ - ???
  5663.     AX = DE23h
  5664.     BX = ??? IRQ number on first PIC?
  5665.     CX = ??? IRQ number on second PIC?
  5666. Return: ???
  5667. Note:    called by QEMM 6.00+
  5668. --------Q-15DE24-----------------------------
  5669. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  5670.     AX = DE24h
  5671.     BX = length of .DVP data
  5672.     CX = length of ??? string
  5673.     DS:SI -> ??? string
  5674.     ES:DI -> .DVP data (see #0331 at AX=102Ch)
  5675. Return: BX = segment of task handle??? or 0000h on error
  5676. Note:    this call is similar to AX=102Ch except that it can interpret the
  5677.       extended DVP data
  5678. SeeAlso: AX=102Ch
  5679. --------Q-15DE25-----------------------------
  5680. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  5681.     AX = DE25h
  5682.     ES:DI -> 67-byte buffer for ASCIZ directory name
  5683. Return: ES:DI buffer filled with directory from which DESQview was started
  5684. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  5685.       name, so if the buffer is not cleared to zeros before the call,
  5686.       there is no way to tell where the directory name ends.  This bug
  5687.       has been fixed in DV 2.52 (DV/X 1.02)
  5688. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  5689. --------Q-15DE26-----------------------------
  5690. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  5691.     AX = DE26h
  5692. Return: BX = segment of handle for task with keyboard focus
  5693. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  5694.       "direct" window is active
  5695. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  5696. --------Q-15DE27-----------------------------
  5697. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  5698.     AX = DE27h
  5699.     BX = type
  5700.         0000h process
  5701.         0001h task
  5702.     ES:DI -> list of Instance Item Structures (see #0453)
  5703. Return: CF clear if successful
  5704.         AX = ???
  5705.         BX = ???
  5706.     CF set on error
  5707.         AX = error code???
  5708.         0004h invalid BX value
  5709. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5710. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  5711.  
  5712. Format of DESQview Instance Item Structure [one element of list]:
  5713. Offset    Size    Description    (Table 0453)
  5714.  00h    WORD    length of data area DESQview should save and restore on context
  5715.           switches (0000h = end of list)
  5716.  02h    DWORD    pointer to area to be saved/restored
  5717. --------Q-15DE28-----------------------------
  5718. INT 15 U - DESQview v2.50+ - ???
  5719.     AX = DE28h
  5720.     BX = segment of ??? or 0000h for default
  5721.     ???
  5722. Return: ???
  5723. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5724. SeeAlso: AX=DE2Ah
  5725. --------Q-15DE29BX0000-----------------------
  5726. INT 15 U - DESQview/X - ???
  5727.     AX = DE29h
  5728.     BX = 0000h
  5729.     ???
  5730. Return: CF clear if successful
  5731.         ???
  5732.     CF set on error
  5733. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5734.     under DESQview 2.60, this function and all other subfunctions of
  5735.       AX=DE29h always return CF set, as they are unique to DESQview/X
  5736. --------Q-15DE29BX0001-----------------------
  5737. INT 15 U - DESQview/X - ???
  5738.     AX = DE29h
  5739.     BX = 0001h
  5740.     DX = segment of window handle
  5741. Return: CF clear if successful
  5742.         AX = ???
  5743.         DX = ???
  5744.     CF set on error
  5745. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5746. --------Q-15DE29BX0002-----------------------
  5747. INT 15 U - DESQview/X - ???
  5748.     AX = DE29h
  5749.     BX = 0002h
  5750.     DX = segment of window handle
  5751. Return: CF clear if successful
  5752.         AX = ???
  5753.         DX = ???
  5754.     CF set on error
  5755. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5756. --------Q-15DE29BX0003-----------------------
  5757. INT 15 U - DESQview/X - ???
  5758.     AX = DE29h
  5759.     BX = 0003h
  5760.     DX = segment of window handle
  5761. Return: CF clear if successful
  5762.         ???
  5763.     CF set on error
  5764. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5765. --------Q-15DE29BX0004-----------------------
  5766. INT 15 U - DESQview/X - GET DISPLAY NAME
  5767.     AX = DE29h
  5768.     BX = 0004h
  5769.     CX = size of buffer in bytes
  5770.     DX = segment of window handle
  5771.     ES:DI -> buffer for display name
  5772. Return: CF clear if successful
  5773.         buffer filled with ASCIZ display name (truncated if necessary) or
  5774.           null string if no display
  5775.     CF set on error
  5776. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5777.     the name ":0" refers to the local display
  5778. --------Q-15DE29BX0005-----------------------
  5779. INT 15 U - DESQview/X - ???
  5780.     AX = DE29h
  5781.     BX = 0005h
  5782.     ???
  5783. Return: CF clear if successful
  5784.         ???
  5785.     CF set on error
  5786. Note:    under DESQview 2.60, this function and all other subfunctions of
  5787.       AX=DE29h always return CF set, as they are unique to DESQview/X
  5788. --------Q-15DE2A-----------------------------
  5789. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  5790.     AX = DE2Ah
  5791.     BX = segment of handle for task to interrupt or 0000h for caller
  5792.     DX:CX -> interrupt routine
  5793.     BP,SI,DI,DS,ES as required by interrupt routine
  5794. Return: nothing
  5795. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5796.     this call is the same as AX=DE20h except that it will delay
  5797.       interrupting the specified task until after it has exited DOS
  5798. SeeAlso: AX=1021h,AX=DE20h
  5799. --------Q-15DE2B-----------------------------
  5800. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  5801.     AX = DE2Bh
  5802.     ES:DI -> starting object
  5803.         0000h:0000h for first object in list???
  5804. Return: AX = status
  5805.         0000h successful
  5806.         ES:DI -> next object of same type (window/non-window)
  5807.         0001h failed (ES:DI was not a valid handle)
  5808. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5809.     there are two separate lists, one for window/task objects and one
  5810.       for all other objects
  5811. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  5812. --------Q-15DE2C-----------------------------
  5813. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  5814.     AX = DE2Ch
  5815.     DX = window information format version (0100h for DESQview 2.5x)
  5816.     BX = segment of window handle or 0000h for default
  5817.     ES:DI -> buffer for window information (see #0454)
  5818. Return: AX = status
  5819.         0000h successful
  5820. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5821. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  5822.  
  5823. Format of DESQview window information:
  5824. Offset    Size    Description    (Table 0454)
  5825.  00h    BYTE    task flag: 00h window, 01h task
  5826.  01h    BYTE    process number if owner task
  5827.         00h if non-owner task
  5828.  02h    WORD    segment of owner's handle, 0000h if orphaned
  5829.  04h    WORD    mapping context (see #0320 at AX=1016h)
  5830.  06h    BYTE    task status (see #0455)
  5831.  07h    BYTE    unused
  5832.  08h    WORD    status bits (see #0456)
  5833.  0Ah    BYTE    01h if foreground-only window
  5834.  
  5835. (Table 0455)
  5836. Values for DESQview task status:
  5837.  00h    "Waiting" waiting for input
  5838.  01h    "Idle" keyboard poll limit reached
  5839.  03h    same as 01h
  5840.  04h    "Pausing" INT 15/AX=1000h pause called
  5841.  04h    DV/X direct: user did something to allow task switch
  5842.  05h    "ModeChg" video mode about to be changed
  5843.  06h    "ModeNtf" notify that video mode changed
  5844.  07h    "MoniCh" requested change to other monitor
  5845.  08h    "StartPgm" control relinquished to start new process
  5846.  09h    "MgrCan" made window manager CANCEL command
  5847.  0Ah    "Slicing" time slice expired
  5848.  0Bh    "Exit DOS" notify on DOS calls
  5849.  0Ch    "Enter DOS" process is re-entering DOS
  5850.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  5851.  0Eh    "BrkNxt" Control-Break pressed
  5852.  0Fh    "MgrCol" keyboard focus taken away
  5853.  10h    "PgmInt" interrupted by API call from another task
  5854.  11h    "BldOpen" call to INT 15/AX=DE01h
  5855.  
  5856. Bitfields for DESQview task status bits:
  5857. Bit(s)    Description    (Table 0456)
  5858.  6    task is freeing another task
  5859.  5    process is being created
  5860.  4    user suspended process
  5861.  3    process suspended itself
  5862.  2    process is resized direct window (suspended)
  5863.  1    process swapped out
  5864.  0    DESQview process
  5865. --------Q-15DE2D-----------------------------
  5866. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  5867.     AX = DE2Dh
  5868.     CX = direction
  5869.         FFFFh set socket handler
  5870.         DX:BX -> FAR function for socket interface
  5871.             must be of the format described under INT 63"DESQview"
  5872.               at #2764
  5873.         other get socket handler
  5874.         Return: DX:BX -> socket handler (see #2764)
  5875. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5876.     the "set" subfunction is normally called only by SOCKET.DVR
  5877. SeeAlso: AX=DE2Eh,INT 63"DESQview",#2764
  5878. --------Q-15DE2E-----------------------------
  5879. INT 15 U - DESQview v2.50+ - SOCKET API
  5880.     AX = DE2Eh
  5881.     DX:BX -> socket record (see #0458)
  5882.         0000h:0000h to create a new socket record
  5883. Return: CX = size of socket record in bytes
  5884.     DX:BX -> socket record which was used
  5885. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5886.     socket records are allocated from common memory
  5887.     for Unix compatibility, each socket and connection on a socket is
  5888.       allocated a DOS file handle (referencing an SFT for NUL) which is
  5889.       used on various calls to specify which of possibly multiple
  5890.       connections is to be operated upon
  5891. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  5892.  
  5893. (Table 0457)
  5894. Values for DESQview/X socket API function number:
  5895.  0000h    initialize socket???
  5896.  0001h    "gethostname"
  5897.  0002h    "ioctl" check for input
  5898.  0003h    "sleep" delay for specified period
  5899.  0004h    "htons" convert word to network (big-endian) byte order
  5900.  0005h    "select"
  5901.  0006h    "bsd_close"/"so_close" close socket
  5902.  0007h    NOP
  5903.  0008h    "connect" initiate connection on socket
  5904.  0009h    "recv"/"recvfrom" read from socket
  5905.  000Ah    "socket"
  5906.  000Bh    ???
  5907.  000Ch    "gethostbyname"
  5908.  000Dh    "send"/"sendto" write to socket
  5909.  000Eh    ??? (does something to all connections for process)
  5910.  000Fh    "getpid" get process identifier
  5911.  0010h    "gettimeofday"
  5912.  0011h    "bind" assign name to socket
  5913.  0012h    "listen" listen for connections on socket
  5914.  0013h    "accept" accept connection on socket
  5915.  0014h    connect to X server
  5916.  0015h    "gethostbyaddr" get host information for an address
  5917.  0016h    "getprotobyname"
  5918.  0017h    "getprotobynumber"
  5919.  0018h    "getservbyname"
  5920.  0019h    "getservbyport"
  5921.  001Ah    "getsockname" determine name bound to socket
  5922.  001Bh    "getpeername" get name of connected peer
  5923.  001Ch    "getsockopt"/"setsockopt"
  5924.  001Dh    "so_exit"     close all sockets for calling process
  5925.  001Eh    "issock" determine whether file handle references socket
  5926.  001Fh    "so_attach" reattach previously detached socket
  5927.  0020h    "so_detach" temporarily detach socket
  5928.  0021h    "dvpath" get DESQview directory (see also AX=DE24h)
  5929.  0022h    "NewProc" start new application (see also AX=102Ch)
  5930.  0023h    "so_linkup"
  5931.  0024h    "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
  5932.  0025h    indirect INT 15h call
  5933.  0026h    Network Manager interface
  5934.  0027h    "so_unlink"    close connection from "so_linkup"
  5935.  0028h    "raisepriority"
  5936.  0029h    "lowerpriority"
  5937.  002Ah    "so_private" ???
  5938.  FFFFh    "NetExit" (appears to be a NOP)
  5939.  
  5940. Format of DESQview/X socket record:
  5941. Offset    Size    Description    (Table 0458)
  5942.  00h    WORD    signature F0ADh
  5943.  02h    WORD    function number (see #0457)
  5944.  04h    WORD    returned error code (see #0478)
  5945.  06h    WORD    maximum message size??? (usually 0400h)
  5946.  08h    WORD    PSP segment to use or 0000h if socket not valid
  5947.  0Ah    WORD    scratch space (JFT size)
  5948.  0Ch    DWORD    scratch space (JFT address)
  5949.  10h    DWORD    mailbox handle (initialized by function 0000h)
  5950.  14h    DWORD    timer object handle (initialized by function 0000h)
  5951. ---function 0000h---
  5952.  18h    WORD    (ret) ???
  5953. ---function 0001h---
  5954.  18h    WORD    (ret) status???
  5955.  1Ah 128 BYTEs    (ret) ASCIZ hostname (empty string if not on network)
  5956.  9Ah    WORD    maximum length of hostname to return
  5957. ---function 0002h---
  5958.  18h    WORD    (ret) status
  5959.  1Ah    WORD    socket's file handle
  5960.  1Ch    WORD    IOCTL function
  5961.         05h "FIONREAD" determine available input
  5962.         06h "FIONBIO" set blocking state of socket
  5963.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  5964.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  5965. ---function 0003h---
  5966.  18h  2 BYTEs    unused
  5967.  1Ah    WORD    delay time in seconds
  5968. ---function 0004h---
  5969.  18h    WORD    (ret) result in network (big-endian) byte order
  5970.  1Ah    WORD    value to convert to network byte order
  5971. ---function 0005h---
  5972.  18h    WORD    (ret) number of handles meeting the specified conditions???
  5973.  1Ah    WORD    number of file handles in each bitset
  5974.  1Ch    DWORD    bitset of socket handles to check for readability
  5975.  20h    DWORD    bitset of socket handles to check for writability
  5976.  24h    DWORD    bitset of socket handles to check for errors
  5977.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  5978.  2Ah    DWORD    ???
  5979.  2Eh    DWORD    ???
  5980. ---function 0006h---
  5981.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  5982.  1Ah    WORD    socket's file handle
  5983. ---function 0008h---
  5984.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  5985.  1Ah    WORD    socket's file handle
  5986.  1Ch    WORD    0001h if socket name specified, 0000h if not
  5987.  1Eh    WORD    length of socket name
  5988.  20h  N BYTEs    name of socket to which to connect
  5989. ---function 0009h---
  5990.  18h    WORD    (ret) number of bytes actually read, 0000h if connection
  5991.             closed, or FFFFh on error
  5992.  1Ah    WORD    socket's file handle
  5993.  1Ch    WORD    number of bytes to read
  5994.  1Eh    WORD    flags
  5995.  20h    WORD    0000h if no source address desired
  5996.         0001h if source address is to be stored (datagram sockets)
  5997.  22h    WORD    length of source address
  5998.  24h 110 BYTEs    source address
  5999.  92h 1K BYTEs    buffer for data to be read
  6000. ---function 000Ah---
  6001.  18h    WORD    (ret) socket's file handle or FFFFh on error
  6002.  1Ah    WORD    address family (0001h,0002h)
  6003.  1Ch    WORD    socket type
  6004.  1Eh    WORD    protocol
  6005. ---function 000Bh---
  6006.  18h    WORD    (ret) 0001h if ??? or FFFFh on error
  6007.  1Ah    WORD    socket's file handle
  6008.  1Eh    WORD    (call) ???
  6009. ---function 000Ch---
  6010.  18h 128 BYTEs    ASCIZ hostname (special case if empty string or "unix")
  6011.  98h    ???    (ret) packed 'hostent' structure
  6012.  A2h    ???    (ret) ???
  6013. ---function 000Dh---
  6014.  18h    WORD    (ret) number of bytes actually written or FFFFh on error
  6015.  1Ah    WORD    socket's file handle
  6016.  1Ch    WORD    number of bytes to write
  6017.  1Eh    WORD    number of bytes to follow in subsequent writes???
  6018.  20h    WORD    flags
  6019.  22h    WORD    0000h if no destination specified, 0001h if destination present
  6020.  24h    WORD    0001h if broadcast message???, 0000h if not
  6021.         (ignored if no destination specified)
  6022.  26h    WORD    length of destination address
  6023.  28h 110 BYTEs    destination address
  6024.  96h 1K BYTEs    buffer containing data to be written
  6025. ---function 000Eh---
  6026.  no additional fields
  6027. ---function 000Fh---
  6028.  18h    DWORD    (ret) DESQview task handle of calling process
  6029. ---function 0010h---
  6030.  18h    DWORD    (ret) current time
  6031.  1Ch    DWORD    (ret) ???
  6032. ---function 0011h---
  6033.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6034.  1Ah    WORD    socket's file handle
  6035.  1Ch    WORD    length of name
  6036.  1Eh  N BYTEs    buffer for socket name
  6037. ---function 0012h---
  6038.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6039.  1Ah    WORD    socket's file handle
  6040.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  6041. ---function 0013h---
  6042.  18h    WORD    (ret) file handle for new connection or FFFFh on error
  6043.  1Ah    WORD    listen()ing socket's file handle
  6044.  1Ch    WORD    (call) length of buffer for connecting entity's address
  6045.         (ret) actual length of address
  6046.  1Eh  N BYTEs    buffer for connecting entity's address (110 bytes???)
  6047. ---function 0014h---
  6048.  18h    WORD    (ret) socket's file handle or FFFFh on error
  6049.  1Ah  4 BYTEs    (ret) ???
  6050.  1Eh    WORD    (ret) ???
  6051.  20h    WORD    (ret) ???
  6052.  22h 256 BYTEs    ASCIZ X display name
  6053. 122h    ???
  6054. ---function 0015h---
  6055.  18h    WORD    (call) type of address??? (test for 0001h seen)
  6056.  1Ah    WORD    (call) length of buffer for host address
  6057.  1Ch 110 BYTEs    buffer containing ASCIZ host address
  6058.  8Ah    WORD    (ret) offset of official host name
  6059.  8Ch    WORD    (ret) offset of alias list???
  6060.  8Eh    WORD    (ret) address type???
  6061.  90h    WORD    (ret) length of an address in bytes???
  6062.  92h    WORD    (ret) offset of address???
  6063.  9Ah  N BYTEs    (ret) buffer for hostname, alias list, and host address
  6064. ---function 0016h---
  6065.  18h    ???    buffer for ASCIZ protocol name
  6066.  98h    ???
  6067. ---function 0017h---
  6068.  18h    WORD    (call) protocol number
  6069.  1Ah    WORD    (ret) ??? or 0001h
  6070. ---function 0018h---
  6071.  18h 128 BYTEs    buffer containing ASCIZ ???
  6072.  98h 128 BYTEs    buffer containing ASCIZ ???
  6073. 118h    WORD    (ret) ???
  6074. ---function 0019h---
  6075.  18h    WORD    port number
  6076.  1Ah 128 BYTEs    (call) ASCIZ host name
  6077.         (ret) packed servent strctures???
  6078.  9Ah    WORD    (ret) ???
  6079. ---function 001Ah---
  6080.  18h    WORD    (ret) 0000h if successful, FFFFh on error
  6081.  1Ah    WORD    socket's file handle
  6082.  1Ch    WORD    (call) length of buffer for socket name
  6083.         (ret) actual length of socket name
  6084.  1Eh  N BYTEs    buffer for socket name
  6085. ---function 001Bh---
  6086.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6087.  1Ah    WORD    socket's file handle
  6088.  1Ch    WORD    (call) size of buffer for name
  6089.         (ret) actual size of name
  6090.  1Eh  N BYTEs    buffer for peer's name
  6091. ---function 001Ch---
  6092.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6093.  1Ah    WORD    direction: 0000h to get, 0001h to set
  6094.  1Ch    WORD    socket's file handle
  6095.  1Eh    WORD    option level
  6096.  20h    WORD    option name
  6097.  22h    WORD    (call) length of buffer for option value
  6098.         (ret) actual length of option value
  6099.  24h  N BYTEs    buffer for option value
  6100. ---function 001Dh---
  6101.  no additional fields
  6102. ---function 001Eh---
  6103.  18h    WORD    (ret) status: 0000h ??? or 0001h ???
  6104.  1Ah    WORD    file handle which may or may not be a socket
  6105. ---function 001Fh---
  6106.  18h    WORD    (ret) file handle or FFFFh on error
  6107.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0479) of a
  6108.             previously detached socket
  6109. ---function 0020h---
  6110.  18h    WORD    (ret) status: 0000h if successful or FFFFh on error
  6111.  1Ah    WORD    socket's file handle
  6112.  1Ch    DWORD    (ret) pointer to Socket Context Record (see #0479) for
  6113.             the file handle
  6114. ---function 0021h---
  6115.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  6116. ---function 0022h---
  6117.  18h    DWORD    (ret) task handle of new application
  6118.  1Ch    WORD    size of .DVP data
  6119.  1Eh 129 BYTEs    ASCIZ ???
  6120.  9Fh  N BYTEs    .DVP data (see #0331 at AX=102Ch)
  6121. ---function 0023h---
  6122.  18h    WORD    (ret) ??? or FFFFh on error
  6123.  1Ah    WORD    socket's file handle???
  6124. ---function 0024h---
  6125.  18h    WORD    (ret) DOS error code (see #1020 at INT 21/AH=59h/BX=0000h)
  6126.             0000h if successful
  6127.  1Ah 129 BYTEs    ASCIZ filename/pathname
  6128. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  6129. ---function 0025h---
  6130.  18h    WORD    value of AX
  6131.  1Ah    WORD    value of BX
  6132.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  6133.         (call) number of stack parameters if AH value is 12h
  6134.         (ret) returned CX for calls other than INT 15/AH=12h
  6135.  1Eh    WORD    value of DX
  6136.  20h    WORD    value of DI
  6137.  22h    WORD    value of SI
  6138.  24h    WORD    value of DS
  6139.  26h    WORD    value of ES
  6140.  28h    WORD    (ret) value of FLAGS after call
  6141.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  6142.         (ret) stack results from INT 15/AH=12h call
  6143. ---function 0026h---
  6144.  18h    WORD    (call) Network Manager subfunction (see #0459)
  6145.         (ret) status??? (0000h on error)
  6146.  1Ah    WORD    (call) size of parameter data
  6147.         (ret) size of returned data
  6148.  1Ch  N BYTEs    (call) parameter data required by call (see #0460,#0461,#0477)
  6149.         (ret) result data (see #0470,#0471,#0476)
  6150. ---function 0027h---
  6151.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6152.  1Ah    WORD    socket's file handle
  6153. ---functions 0028h,0029h---
  6154.  18h    WORD    (call) file handle for which to set priority low/high
  6155.             FFFFh to change calling task's priority
  6156. ---function 002Ah---
  6157.  no additional fields
  6158.  
  6159. (Table 0459)
  6160. Values for DESQview/X Network Manager subfunction:
  6161.  0004h    "so_exit"???
  6162.  0005h    "gethostbyname"
  6163.  0006h    "gethostname"
  6164.  0009h    "socket"
  6165.  000Dh    "gethostbyaddr"
  6166.  000Fh    "getprotobyname"
  6167.  0010h    get protocol name for protocol number
  6168.  0011h    "getservbyname"
  6169.  0012h    "getservbyport" (see #0463)
  6170.  0013h    "getsockname"??? (see #0464)
  6171.  0016h    "shutdown" (see #0465)
  6172.  0017h    kill Network Manager
  6173.  0018h    "getpeername"??? (see #0466)
  6174.  0019h    ??? (called by socket function 0000h) (see #0467)
  6175.  001Ah    ??? (see #0468)
  6176.  001Bh    "so_linkup" (see #0469)
  6177.  001Dh    "getnetstatus" get network services (see #0470)
  6178.  001Fh    "getpwuid"
  6179.  0020h    "getpwnam"
  6180.  0021h    "getpwvar"
  6181.  0022h    "crypt"
  6182.  0023h    "so_unlink"
  6183.  0024h    "getlogin" (see #0471)
  6184.  0028h    "sethostent"
  6185.  0029h    "gethostent"
  6186.  002Ah    "soaddhost"
  6187.  002Bh    "soupdatehost"
  6188.  002Ch    "sodeletehost"
  6189.  002Dh    "setservent"
  6190.  002Eh    "getservent"
  6191.  002Fh    "setpwent"
  6192.  0030h    "getpwent" (see #0472)
  6193.  0031h    "sethostpath" (see #0473)
  6194.  0032h    "endservent"
  6195.  0033h    "endhostent"
  6196.  0034h    "getnettype" get IP network number (see #0474)
  6197.  0035h    ??? (pops up Network Manager window)
  6198.  0037h    "getnettimeout" (see #0475)
  6199.  0038h    get machine name and IP address (see #0476)
  6200.  0039h    "getuid" (see #0477)
  6201. ---DV/X v2.0+ ---
  6202.  0041h    "deletepwnam"
  6203.  0045h    "renamepw"
  6204.  
  6205. Format of Function 0026h/Subfunction 000Fh data:
  6206. Offset    Size    Description    (Table 0460)
  6207.  00h  8 BYTEs    (ret) ???
  6208.  
  6209. Format of Function 0026h/Subfunction 0010h data:
  6210. Offset    Size    Description    (Table 0461)
  6211.  00h  2 BYTEs    (ret) ???
  6212.  02h    WORD    (ret) protocol number
  6213.  04h    WORD    (call) protocol number for which to get name
  6214.  06h    WORD    (ret) ???
  6215.  08h    var    (ret) ASCIZ protocol name
  6216.  N    var    (ret) ASCIZ protocol name
  6217.  
  6218. Format of Function 0026h/Subfunction 0011h data:
  6219. Offset    Size    Description    (Table 0462)
  6220.  00h  8 BYTEs    ???
  6221.  08h    var    (ret) ASCIZ protocol name
  6222.     var    (ret) ASCIZ ??? name
  6223.     var    (ret) ASCIZ ??? name
  6224.  
  6225. Format of Function 0026h/Subfunction 0012h data:
  6226. Offset    Size    Description    (Table 0463)
  6227.  00h  8 BYTEs    (ret) ???
  6228.  
  6229. Format of Function 0026h/Subfunction 0013h data:
  6230. Offset    Size    Description    (Table 0464)
  6231.  00h 116 BYTEs    (ret) ???
  6232.  
  6233. Format of Function 0026h/Subfunction 0016h ("shutdown") data:
  6234. Offset    Size    Description    (Table 0465)
  6235.  00h    WORD    (ret) shutdown status (0000h successful, FFFFh error)
  6236.  02h  4 BYTEs    (ret) ???
  6237.  04h    WORD    (call) socket handle
  6238.  06*h    WORD    (call) what (0 = receives, 1 = sends, 2 = both)
  6239.  
  6240. Format of Function 0026h/Subfunction 0018h data:
  6241. Offset    Size    Description    (Table 0466)
  6242.  00h 116 BYTEs    (ret) ???
  6243.  
  6244. Format of Function 0026h/Subfunction 0019h data:
  6245. Offset    Size    Description    (Table 0467)
  6246.  00h  4 BYTEs    (ret) ???
  6247.  04h    DWORD    (ret) task handle of ???
  6248.  
  6249. Format of Function 0026h/Subfunction 001Ah data:
  6250. Offset    Size    Description    (Table 0468)
  6251.  00h 38 BYTEs    (ret) ???
  6252.  
  6253. Format of Function 0026h/Subfunction 001Bh data:
  6254. Offset    Size    Description    (Table 0469)
  6255.  00h 10 BYTEs    (ret) ???
  6256.  
  6257. Format of Function 0026h/Subfunction 001Dh return data [array]:
  6258. Offset    Size    Description    (Table 0470)
  6259.  00h    WORD    ??? or FFFFh if end of array
  6260.  02h  7 BYTEs    ???
  6261.  09h 27 BYTEs    ASCIZ name of service
  6262.  
  6263. Format of Function 0026h/Subfunction 0024h return data:
  6264. Offset    Size    Description    (Table 0471)
  6265.  00h    var    ASCIZ username
  6266.  
  6267. Format of Function 0026h/Subfunction 0030h data:
  6268. Offset    Size    Description    (Table 0472)
  6269.  00h    WORD    (call) UID or 0000h for current user
  6270.         (ret) ???
  6271.  02h    WORD    (ret) UID
  6272.  04h  6 BYTEs    (ret) ???
  6273.  0Ah    var    (ret) ASCIZ username
  6274.     var    (ret) ASCIZ encrypted password
  6275.     var    (ret) ASCIZ initial ("home") directory
  6276.  
  6277. Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
  6278. Offset    Size    Description    (Table 0473)
  6279.  00h   4 BYTEs    ???
  6280.  04h 144 BYTEs    ASCIZ ???
  6281.  
  6282. Format of Function 0026h/Subfunction 0034h data:
  6283. Offset    Size    Description    (Table 0474)
  6284.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  6285.  
  6286. Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
  6287. Offset    Size    Description    (Table 0475)
  6288.  00h    WORD    (ret) timeout
  6289.  02h  2 BYTEs    (ret) ???
  6290.  
  6291. Format of Function 0026h/Subfunction 0038h return data:
  6292. Offset    Size    Description    (Table 0476)
  6293.  00h    BYTE    ???
  6294.  01h  4 BYTEs    IP address
  6295.  05h    var    ASCIZ machine name
  6296.     ???
  6297.  
  6298. Format of Function 0026h/Subfunction 0039h ("getuid") return data:
  6299. Offset    Size    Description    (Table 0477)
  6300.  00h    WORD    user ID
  6301.  02h  2 BYTEs    ???
  6302. SeeAlso: #0473,#0476
  6303.  
  6304. (Table 0478)
  6305. Values for DESQview/X socket error code:
  6306.  0000h    successful
  6307.  0009h    "BADF" bad file handle
  6308.  000Ch    "ENOMEM" out of memory
  6309.  000Eh    "EFAULT" bad address
  6310.  0016h    "EINVAL" invalid argument
  6311.  0018h    "EMFILE" too many open files
  6312.  0020h    "EPIPE" ??? broken pipe
  6313.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  6314.  0024h    "EINPROGRESS" operation now in progress
  6315.  0026h    "ENOTSOCK" socket invalid
  6316.  0028h    "EMSGSIZE" message too long to send atomically
  6317.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  6318.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  6319.  0031h    "EDOM" argument too large
  6320.  0038h    "EISCONN" socket is already connected
  6321.  0039h    "ENOTCONN" socket is not connected
  6322.  
  6323. Format of DESQview/X Socket Context Record:
  6324. Offset    Size    Description    (Table 0479)
  6325.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  6326.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  6327.  06h    WORD    PSP segment of owner or 0000h
  6328.  08h    WORD    mapping context of owning window (see #0320 at AX=1016h)
  6329.  0Ah  2 BYTEs    ???
  6330.  0Ch    WORD    address family
  6331.  0Eh    WORD    socket type
  6332.  10h    WORD    protocol
  6333.  12h    WORD    socket state
  6334.         0001h created
  6335.         0002h bound
  6336.         0003h listening???
  6337.         0005h connected
  6338.  14h    DWORD    timer object handle
  6339.  18h    DWORD    object handle (mailbox???)
  6340.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  6341.  20h    DWORD    pointer to ??? or 0000h
  6342.  24h  6 BYTEs    ???
  6343.  2Ah    WORD    file handle for socket or FFFFh
  6344.  2Ch  2 BYTEs    ???
  6345.  2Eh    WORD    nonzero if socket nonblocking
  6346. ---network connections only---
  6347.  30h  2 BYTEs    ???
  6348.  32h    WORD    ???
  6349.  34h  4 BYTEs    (big-endian) IP address of remote
  6350.  38h  6 BYTEs    ???
  6351. --------Q-15DE2F-----------------------------
  6352. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  6353.     AX = DE2Fh
  6354. Return: BX = status
  6355.         0001h keyboard focus has been given to a direct window since the
  6356.         last call
  6357.         0000h if not
  6358. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  6359.     Quarterdeck stated that this call would not be available under future
  6360.       versions of DESQview Classic, but it is still present in v2.60
  6361. --------Q-15DE30-----------------------------
  6362. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  6363.     AX = DE30h
  6364. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  6365. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  6366.     you must first check the DESQview version to verify that it is 2.50 or
  6367.       greater
  6368. SeeAlso: INT 21/AH=2Bh/CX=4445h
  6369. --------Q-15DE31-----------------------------
  6370. INT 15 - DESQview/X v1.10 - ???
  6371.     AX = DE31h
  6372.     CX = ???
  6373.         0000h ???
  6374.         nonzero ???
  6375.     ???
  6376. Return: ???
  6377. --------b-15DF-------------------------------
  6378. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  6379.     AH = DFh
  6380.     AL = function
  6381.         00h turn on Turbo mode
  6382.         01h turn off Turbo mode
  6383.         02h set Turbo mode according to hardware switch
  6384. SeeAlso: INT 13/AX=FFFFh
  6385. --------b-15E00F-----------------------------
  6386. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  6387.     AX = E00Fh
  6388.     ES:BX -> start of 2nd processor's execution
  6389. Return: AL = status
  6390.         0Fh successful
  6391.         00h failure
  6392. SeeAlso: AX=E10Eh,AX=E200h
  6393. --------b-15E10E-----------------------------
  6394. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  6395.     AX = E10Eh
  6396.     ES:BX -> start of 2nd processor's execution
  6397. Return: AL = status
  6398.         0Fh successful (halted)
  6399.         00h failure (not halted)
  6400. SeeAlso: AX=E00Fh,AX=E200h
  6401. --------b-15E200-----------------------------
  6402. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  6403.     AX = E200h
  6404. Return: AX bit 15 set if 2nd processor available
  6405. SeeAlso: AX=E00Fh,AX=E10Eh
  6406. --------b-15E4-------------------------------
  6407. INT 15 - Tandy??? - ???
  6408.     AH = E4h
  6409.     AL = subfunction
  6410.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  6411.     DL = ???
  6412. Return: DL = 00h if successful???
  6413. Note:    the section of code in 386MAX which calls these functions also checks
  6414.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  6415.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  6416.       support this function, however, returning the usual CF set/AH=86h for
  6417.       "unsupported function".
  6418. --------b-15E4-------------------------------
  6419. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  6420.     AH = E4h
  6421.     AL = subfunction
  6422.         00h get ???
  6423.         Return: CF clear
  6424.             AH = 00h
  6425.             CX = 0000h
  6426.             BX = ??? (read from [XBDA:0094h])
  6427.         01h,02h unsupported by this ROM version
  6428.         Return: CF set, AH = 86h
  6429.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  6430.         Return: CF clear
  6431.             AH = 00h
  6432.             CX = 0000h
  6433.             BX = ???
  6434.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  6435.         Return: CF set, AH = 86h
  6436. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  6437.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  6438. --------b-15E800-----------------------------
  6439. INT 15 - Compaq Contura - GET ???
  6440.     AX = E800h
  6441. Return: AX = 0000h
  6442.     BH = 00h
  6443.     BL = ??? (read from port 0C7Ch)
  6444.     CH = ???
  6445.     CL = ???
  6446.     DX = 0000h
  6447. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  6448. --------b-15E800-----------------------------
  6449. INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
  6450.     AX = E800h
  6451.     BX = ??? (0000h)
  6452. Return: CF clear if successful
  6453.         BH = 02h
  6454.         BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
  6455.     CF set on error
  6456.     others???
  6457. Notes:    used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
  6458.       the Enhanced Parallel Port expected by that driver is available
  6459.     used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
  6460.       volume control hardware expected by that driver is available
  6461. --------b-15E800-----------------------------
  6462. INT 15 - Compaq Prolinea - GET ???
  6463.     AX = E800h
  6464.     BX = ??? (1369h)
  6465. Return: BH = 01h
  6466.     BL = ???
  6467.     others???
  6468. Note:    used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
  6469.       the fix that driver applies is required (will not install if BX on
  6470.       return is other than 010Eh or 010Fh)
  6471. SeeAlso: AX=E802h
  6472. --------b-15E801-----------------------------
  6473. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
  6474.     AX = E801h
  6475. Return: CF clear if successful
  6476.         AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  6477.         BX = extended memory above 16M, in 64K blocks
  6478.         CX = configured memory 1M to 16M, in K
  6479.         DX = configured memory above 16M, in 64K blocks
  6480.     CF set on error
  6481. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
  6482.       as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
  6483.       BIOS
  6484.     supported by AMI BIOSes dated 8/23/94 or later
  6485. SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h"Phoenix",AX=E881h"Phoenix"
  6486. --------b-15E802-----------------------------
  6487. INT 15 - Compaq Contura - GET ???
  6488.     AX = E802h
  6489. Return: CF clear
  6490.     AX = 0000h
  6491.     BX = ???
  6492.     CX = 0000h
  6493. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  6494.       supported by LTE Lite 20 and 25.
  6495. SeeAlso: AX=E801h"Phoenix"
  6496. --------b-15E820-----------------------------
  6497. INT 15 - Phoenix BIOS v4.0 - GET SYSTEM MEMORY MAP
  6498.     AX = E820h
  6499.     EDX = 534D4150h ('SMAP')
  6500.     EBX = continuation value or 00000000h to start at beginning of map
  6501.     ECX = number of bytes to copy ( >= 20 bytes)
  6502.     ES:DI -> buffer for result (see #0480)
  6503. Return: CF clear if successful
  6504.         EAX = 534D4150h ('SMAP')
  6505.         ES:DI buffer filled
  6506.         EBX = next offset from which to copy or 00000000h if all done
  6507.         ECX = actual length returned in bytes
  6508.     CF set on error
  6509.         AH = error code (86h) (see #0400 at INT 15/AH=80h)
  6510. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes
  6511.     supported by AMI BIOSes dated 8/23/94 or later
  6512.     a maximum of 20 bytes will be transferred at one time, even if ECX is
  6513.       higher
  6514.     if this function is not supported, an application should fall back
  6515.       to AX=E802h, AX=E801h, and then AH=88h
  6516.     the BIOS is permitted to return a nonzero continuation value in EBX
  6517.       and indicate that the end of the list has already been reached by
  6518.       returning with CF set on the next iteration
  6519.     this function will return base memory and ISA/PCI memory contiguous
  6520.       with base memory as normal memory ranges; it will indicate
  6521.       chipset-defined address holes which are not in use and motherboard
  6522.       memory-mapped devices, and all occurrences of the system BIOS as
  6523.       reserved; standard PC address ranges will not be reported
  6524. SeeAlso: AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
  6525.  
  6526. Format of Phoenix BIOS system memory map address range descriptor:
  6527. Offset    Size    Description    (Table 0480)
  6528.  00h    QWORD    base address
  6529.  08h    QWORD    length in bytes
  6530.  10h    DWORD    type of address range (see #3460)
  6531.  
  6532. (Table 3460)
  6533. Values for System Memory Map address type:
  6534.  01h    memory, available to OS
  6535.  02h    reserved, not available (e.g. system ROM, memory-mapped device)
  6536.  03h    ACPI Reclaim Memory (usable by OS after reading ACPI tables)
  6537.  04h    ACPI NVS Memory (OS is required to save this memory between NVS
  6538.       sessions)
  6539.  other    not defined yet -- treat as Reserved
  6540. SeeAlso: #0480
  6541. --------b-15E881-----------------------------
  6542. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
  6543.     AX = E881h
  6544. Return: CF clear if successful
  6545.         EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  6546.         EBX = extended memory above 16M, in 64K blocks
  6547.         ECX = configured memory 1M to 16M, in K
  6548.         EDX = configured memory above 16M, in 64K blocks
  6549.     CF set on error
  6550. Note:    supported by AMI BIOSes dated 8/23/94 or later
  6551. SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
  6552. --------m-15F200CX454D-----------------------
  6553. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
  6554.     AX = F200h
  6555.     CX = 454Dh
  6556. Return: CF clear if hardware already initialised
  6557.         BX = upper RAM areas in use
  6558.         bit 0: C000-C3FF
  6559.         bit 1: C400-C7FF
  6560.         ...
  6561.         bit 11: EC00-EFFF
  6562.     CF set if hardware not initialised yet
  6563. --------B-1600-------------------------------
  6564. INT 16 - KEYBOARD - GET KEYSTROKE
  6565.     AH = 00h
  6566. Return: AH = BIOS scan code
  6567.     AL = ASCII character
  6568. Notes:    on extended keyboards, this function discards any extended keystrokes,
  6569.       returning only when a non-extended keystroke is available
  6570.     the BIOS scan code is usually, but not always, the same as the hardware
  6571.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  6572.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  6573.       differs for shifted special keys
  6574.     some (older) clone BIOSes do not discard extended keystrokes and manage
  6575.       function AH=00h and AH=10h the same
  6576.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  6577.       keystrokes (same as with functions 10h and 20h), but will always
  6578.       translate prefix E0h to 00h. This allows old programs to use extended
  6579.       keystrokes and should not cause compatibility problems
  6580. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
  6581. --------B-1601-------------------------------
  6582. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  6583.     AH = 01h
  6584. Return: ZF set if no keystroke available
  6585.     ZF clear if keystroke available
  6586.         AH = BIOS scan code
  6587.         AL = ASCII character
  6588. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  6589.       however, any extended keystrokes which are not compatible with 83/84-
  6590.       key keyboards are removed by IBM and most fully-compatible BIOSes in
  6591.       the process of checking whether a non-extended keystroke is available
  6592.     some (older) clone BIOSes do not discard extended keystrokes and manage
  6593.       function AH=00h and AH=10h the same
  6594.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  6595.       keystrokes (same as with functions 10h and 20h), but will always
  6596.       translate prefix E0h to 00h. This allows old programs to use extended
  6597.       keystrokes and should not cause compatibility problems
  6598. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  6599. --------B-1602-------------------------------
  6600. INT 16 - KEYBOARD - GET SHIFT FLAGS
  6601.     AH = 02h
  6602. Return: AL = shift flags (see #0481)
  6603.     AH destroyed by many BIOSes
  6604. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  6605.  
  6606. Bitfields for keyboard shift flags:
  6607. Bit(s)    Description    (Table 0481)
  6608.  7    Insert active
  6609.  6    CapsLock active
  6610.  5    NumLock active
  6611.  4    ScrollLock active
  6612.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  6613.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  6614.  1    left shift key pressed
  6615.  0    right shift key pressed
  6616. SeeAlso: #0486,#2992,MEM 0040h:0017h
  6617. --------B-1603-------------------------------
  6618. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  6619.     AH = 03h
  6620.     AL = subfunction
  6621.         00h set default delay and rate (PCjr and some PS/2)
  6622.         01h increase delay before repeat (PCjr)
  6623.         02h decrease repeat rate by factor of 2 (PCjr)
  6624.         03h increase delay and decrease repeat rate (PCjr)
  6625.         04h turn off typematic repeat (PCjr and some PS/2)
  6626.         05h set repeat rate and delay (AT,PS)
  6627.         BH = delay value (00h = 250ms to 03h = 1000ms)
  6628.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  6629.         06h get current typematic rate and delay (newer PS/2s)
  6630.         Return: BL = repeat rate (above)
  6631.             BH = delay (above)
  6632. Return: AH destroyed by many BIOSes
  6633. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  6634.       supported
  6635. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  6636. --------B-1604-------------------------------
  6637. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  6638.     AH = 04h
  6639.     AL = keyclick state
  6640.         00h off
  6641.         01h on
  6642. Return: AH destroyed by many BIOSes
  6643. SeeAlso: AH=03h,AH=04h"K3PLUS"
  6644. --------b-1604-------------------------------
  6645. INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
  6646.     AH = 04h
  6647. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  6648. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
  6649. SeeAlso: INT 51"Tandy 2000"
  6650. --------K-1604-------------------------------
  6651. INT 16 - K3PLUS v6.22+ - SET KEYCLICK
  6652.     AH = 04h
  6653.     AL = keyclick state
  6654.         00h keyclick off, leave loudness setting unchanged
  6655.         01h keyclick on, leave loudness setting unchanged
  6656.         else
  6657.            bit 0: keyclick enabled if set
  6658.            bits 7-1: new keyclick loudness (non-zero)
  6659. Return: AH destroyed by many BIOSes
  6660. Note:    Applications which try to set a new loudness, but are unsure of the
  6661.       results of other INT 16/AH=04h implementations, should set the new
  6662.       loudness first, and then call this function again with AL=01h or
  6663.       AL=00h
  6664. SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
  6665. --------B-1605-------------------------------
  6666. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  6667.     AH = 05h
  6668.     CH = BIOS scan code
  6669.     CL = ASCII character
  6670. Return: AL = status
  6671.         00h if successful
  6672.         01h if keyboard buffer full
  6673.     AH destroyed by many BIOSes
  6674. Notes:    under DESQview, a number of "keystrokes" invoke specific
  6675.       DESQview-related actions when they are read from the keyboard
  6676.       buffer (see #0482)
  6677.     similarly, some "keystrokes" invoke special functions on the HP 100LX
  6678.       and HP 200LX (see #0483)
  6679. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
  6680.  
  6681. (Table 0482)
  6682. Values for pseudo-keystrokes for DESQview:
  6683.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  6684.  38FCh or FC00h    pop up DESQview main menu
  6685.  38FEh or FE00h    close the current window
  6686.  38FFh or FF00h    pop up DESQview learn menu
  6687.  
  6688. (Table 0483)
  6689. Values for pseudo-keystrokes for HP 100LX/200LX:
  6690.  EE00h    pop up topcard display and set other system manager applications
  6691.       into sleep mode
  6692. --------B-1605-------------------------------
  6693. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  6694.     AH = 05h
  6695.     AL = function
  6696.         01h set keyboard layout to French
  6697.         02h set keyboard layout to German
  6698.         03h set keyboard layout to Italian
  6699.         04h set keyboard layout to Spanish
  6700.         05h set keyboard layout to UK
  6701.         80h check if function supported
  6702.         Return: AL <> 80h if supported
  6703. Return: ???
  6704.     AH destroyed by many BIOSes
  6705. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  6706. SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
  6707. --------b-1605-------------------------------
  6708. INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
  6709.     AH = 05h
  6710. Desc:    reset the keyboard and flush the keyboard buffer
  6711. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  6712. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
  6713. --------B-1609-------------------------------
  6714. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  6715.     AH = 09h
  6716. Return: AL = supported keyboard functions (see #0484)
  6717.     AH destroyed by many BIOSes
  6718. Notes:    this function is only available if bit 6 of the second feature byte
  6719.       returned by INT 15/AH=C0h is set (see #0411)
  6720.     reportedly, the Award Modular BIOS v4.50G returns the keyboard function
  6721.       flags in AH instead of AL, and provides this function even though
  6722.       its availability is not indicated by INT 15/AH=C0h
  6723. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  6724.  
  6725. Bitfields for supported keyboard functions:
  6726. Bit(s)    Description    (Table 0484)
  6727.  7    reserved
  6728.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  6729.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  6730.  4    INT 16/AH=0Ah supported
  6731.  3    INT 16/AX=0306h supported
  6732.  2    INT 16/AX=0305h supported
  6733.  1    INT 16/AX=0304h supported
  6734.  0    INT 16/AX=0300h supported
  6735. SeeAlso: #0413
  6736. --------B-160A-------------------------------
  6737. INT 16 - KEYBOARD - GET KEYBOARD ID
  6738.     AH = 0Ah
  6739. Return: BX = keyboard ID (see #0485)
  6740.     AH destroyed by many BIOSes
  6741. Notes:    check return value from AH=09h to determine whether this function is
  6742.       supported
  6743.     this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
  6744.       replacement
  6745. SeeAlso: AH=09h,AX=AF4Dh
  6746.  
  6747. (Table 0485)
  6748. Values for keyboard ID:
  6749.  0000h    no keyboard attached
  6750.  41ABh    Japanese "G" keyboard (translate mode)
  6751.     MF2 Keyboard (usually in translate mode)
  6752.  54ABh    Japanese "P" keyboard (translate mode)
  6753.  83ABh    Japanese "G" keyboard (pass-through mode)
  6754.     MF2 Keyboard (pass-through mode)
  6755.  84ABh    Japanese "P" keyboard (pass-through mode)
  6756.  90ABh    old Japanese "G" keyboard
  6757.  91ABh    old Japanese "P" keyboard
  6758.  92ABh    old Japanese "A" keyboard
  6759. --------B-1610-------------------------------
  6760. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  6761.     AH = 10h
  6762. Return: AH = BIOS scan code
  6763.     AL = ASCII character
  6764. Notes:    if no keystroke is available, this function waits until one is placed
  6765.       in the keyboard buffer
  6766.     the BIOS scan code is usually, but not always, the same as the hardware
  6767.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  6768.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  6769.       differs for shifted special keys.
  6770.     unlike AH=00h, this function does not discard extended keystrokes
  6771.     INT 16/AH=09h can be used to determine whether this function is
  6772.       supported, but only on later model PS/2s
  6773. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  6774. --------B-1611-------------------------------
  6775. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  6776.     AH = 11h
  6777. Return: ZF set if no keystroke available
  6778.     ZF clear if keystroke available
  6779.         AH = BIOS scan code
  6780.         AL = ASCII character
  6781. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  6782.     unlike AH=01h, this function does not discard extended keystrokes
  6783.     some versions of the IBM BIOS Technical Reference erroneously report
  6784.       that CF is returned instead of ZF
  6785.     INT 16/AH=09h can be used to determine whether this function is
  6786.       supported, but only on later model PS/2s
  6787. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  6788. --------B-1612-------------------------------
  6789. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  6790.     AH = 12h
  6791. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0486)
  6792.     AH = shift flags 2 (see #0487)
  6793. Notes:    AL bit 3 set only for left Alt key on many machines
  6794.     AH bits 7 through 4 always clear on a Compaq SLT/286
  6795.     INT 16/AH=09h can be used to determine whether this function is
  6796.       supported, but only on later model PS/2s
  6797.     many BIOSes (including at least some versions of Phoenix and AMI) will
  6798.       destroy AH on return from functions higher than AH=12h, returning
  6799.       12h less than was in AH on entry (due to a chain of DEC/JZ
  6800.       instructions)
  6801. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  6802.  
  6803. Bitfields for keyboard shift flags 1:
  6804. Bit(s)    Description    (Table 0486)
  6805.  7    Insert active
  6806.  6    CapsLock active
  6807.  5    NumLock active
  6808.  4    ScrollLock active
  6809.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  6810.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  6811.  1    left shift key pressed
  6812.  0    right shift key pressed
  6813. SeeAlso: #0481,#0487,MEM 0040h:0017h,#M009
  6814.  
  6815. Bitfields for keyboard shift flags 2:
  6816. Bit(s)    Description    (Table 0487)
  6817.  7    SysReq key pressed (SysReq is often labeled SysRq)
  6818.  6    CapsLock pressed
  6819.  5    NumLock pressed
  6820.  4    ScrollLock pressed
  6821.  3    right Alt key pressed
  6822.  2    right Ctrl key pressed
  6823.  1    left Alt key pressed
  6824.  0    left Ctrl key pressed
  6825. SeeAlso: #0486,MEM 0040h:0018h,#M010
  6826. --------J-1613-------------------------------
  6827. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  6828.     AH = 13h
  6829.     AL = function
  6830.         00h set shift status
  6831.         DX = shift status (see #0488), must preserve internal status
  6832.               bits
  6833.         01h get shift status
  6834.         Return: DX = current shift status (see #0488)
  6835. Note:    these functions are supplied by the Japanese Front-End Processor
  6836. SeeAlso: AH=14h,INT 21/AX=6301h
  6837.  
  6838. Bitfields for DOS/V shift status:
  6839. Bit(s)    Description    (Table 0488)
  6840.  0    full-size rather than half-size
  6841.  2-1    character input mode
  6842.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  6843.  5-3    internal status
  6844.  6    Romaji enabled
  6845.  7    Katakana to Kanji conversion enabled
  6846.  15-8    internal status
  6847. --------J-1614-------------------------------
  6848. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  6849.     AH = 14h
  6850.     AL = function
  6851.         00h enable display
  6852.         01h disable display
  6853.         02h get display state
  6854.         Return: AL = current state (00h enabled, 01h disabled)
  6855. Desc:    control the screen-bottom shift status row(s) for the Japanese
  6856.       Front-End Processor
  6857. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  6858. --------B-1620-------------------------------
  6859. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  6860.     AH = 20h
  6861. Return: AH = BIOS scan code (see AH=10h)
  6862.     AL = ASCII character
  6863. Note:    use AH=09h to determine whether this function is supported
  6864. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  6865. --------b-1620------------------------------------
  6866. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  6867.     AH = 20h
  6868.     AL = shift status (see #0489)
  6869. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  6870.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  6871.     the user can override the specified settings by pressing the keys
  6872.  
  6873. Bitfields for HUNTER 16 shift status:
  6874. Bit(s)    Description    (Table 0489)
  6875.  4    Scroll Lock on
  6876.  5    Num Lock on
  6877.  6    Caps Lock on
  6878. --------K-1620-------------------------------
  6879. INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
  6880.     AH = 20h
  6881. Return: AX = K3 version
  6882.     ES:BX -> extended keyboard buffer start
  6883.     ES:DX -> extended keyboard buffer end
  6884.     ES:SI -> next keystroke
  6885.     ES:DI -> last keystroke in buffer
  6886.     CX = number of keystrokes in buffer
  6887. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  6888.       Frinke, originally based on the K3 extended German keyboard driver
  6889.       by Martin Gerdes published in c't magazine in 1988
  6890. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  6891.       is no longer supported by v6.30+; use AX=AF20h instead
  6892. SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
  6893. --------B-1621-------------------------------
  6894. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  6895.     AH = 21h
  6896. Return: ZF set if no keystroke available
  6897.     ZF clear if keystroke available
  6898.         AH = BIOS scan code
  6899.         AL = ASCII character
  6900. Notes:    use AH=09h to determine whether this function is supported
  6901.     some versions of the IBM BIOS Technical Reference erroneously report
  6902.       that CF is returned instead of ZF
  6903.     K3PLUS v6.00+ supports this function as an alias of AH=11h
  6904. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  6905. --------b-1621------------------------------------
  6906. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  6907.     AH = 21h
  6908.     AL = shift keys to control (see #0481)
  6909.     BL = shift state for disabled keys
  6910. Note:    If a bit in AL is set the key is disabled and set to the state of the
  6911.       corresponding bit in BL
  6912. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  6913. --------B-1622-------------------------------
  6914. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  6915.     AH = 22h
  6916. Return: AL = shift flags 1 (see #0486)
  6917.     AH = shift flags 2 (see #0487)
  6918. Notes:    use AH=09h to determine whether this function is supported
  6919.     K3PLUS v6.00+ supports this function as an alias of AH=12h
  6920. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  6921. --------b-1622------------------------------------
  6922. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  6923.     AH = 22h
  6924.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  6925.     BX = 0708h
  6926.     CX = 0910h
  6927.     DX = 1112h
  6928. Return: AL = 00h if successful
  6929. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  6930. --------b-1623------------------------------------
  6931. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  6932.     AH = 23h
  6933.     AL = new state of breakout (00h enabled, nonzero disabled)
  6934.     BX = 0708h
  6935.     CX = 0910h
  6936.     DX = 1112h
  6937. Return: AL = 00h if successful
  6938. Desc:    Enables or disables the emergency breakout feature, where the
  6939.       Hunter 16 at power on checks whether the X and P keys are pressed.
  6940.       If so the machine will boot rather than continue the running program
  6941. SeeAlso: AH=22h"HUNTER"
  6942. --------b-1624------------------------------------
  6943. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  6944.     AH = 24h
  6945.     AL = Matrix Code (see #0490)
  6946.     BL = new Key code
  6947. Return: AL = status (00h successful, nonzero failed)
  6948. SeeAlso: AH=2Bh,AH=2Ch
  6949.  
  6950. (Table 0490)
  6951. Values for HUNTER 16 Matrix Code:
  6952.  Code  Key        Code    Key        Code    Key
  6953.  00h   Esc key        1Eh    Space        3Bh    L
  6954.  01h   1        21h    0        3Ch    ,
  6955.  02h   Q        22h    -        3Eh    Right shift
  6956.  03h   Tab        23h    '        42h    8
  6957.  04h   Num Lock        24h    Keypad 4    43h    7
  6958.  05h   \        25h    Enter        44h    U
  6959.  08h   LShift        26h    Keypad 7    45h    I
  6960.  09h   Ctrl        27h    .        46h    J
  6961.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  6962.  0Bh   2        29h    Keypad 0    48h    M
  6963.  0Ch   W        2Ch    =        49h    N
  6964.  0Dh   A        2Dh    Backspace    4Ah    /
  6965.  0Eh   S        2Eh    Keypad 8    4Dh    6
  6966.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  6967.  11h   Alt        30h    Keypad 5    4Fh    T
  6968.  16h   4        31h    Keypad 6    50h    Y
  6969.  17h   3        32h    Keypad 2    51h    G
  6970.  18h   E        33h    Keypad 3    52h    H
  6971.  19h   R        34h    Keypad .    53h    B
  6972.  1Ah   D        37h    9        54h    V
  6973.  1Bh   F        38h    O        55h    #
  6974.  1Ch   X        39h    P        58h    Pwr
  6975.  1Dh   C        3Ah    ;        59h    Shift Pwr
  6976. --------b-1625------------------------------------
  6977. INT 16 - HUNTER 16 - RESET KEYBOARD
  6978.     AH = 25h
  6979. Return: AL = 00h
  6980. Desc:    restores the standard keyboard layout after any remapping
  6981. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  6982. --------K-1625-------------------------------
  6983. INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
  6984.     AH = 25h
  6985.     CX = number of keystrokes to copy
  6986.     ES:SI -> buffer containing keystrokes
  6987. Return: CF clear if successful
  6988.     CF set on error (i.e. buffer full)
  6989.         CX = number of keystrokes NOT transferred
  6990.         ES:SI -> first keystroke not transferred
  6991. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  6992.       is no longer supported by v6.30+; use AX=AF25h instead
  6993. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
  6994. --------b-1626------------------------------------
  6995. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  6996.     AH = 26h
  6997.     AL = new state of keyclicks (00h disabled, 01h enabled)
  6998. Return: AL = 00h
  6999. SeeAlso: AH=2Ah
  7000. --------b-1627------------------------------------
  7001. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  7002.     AH = 27h
  7003.     AL = what to dump
  7004.         00h whole (virtual) window
  7005.         01h LCD window only
  7006. Return: AL = 00h
  7007. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  7008.       part displayed in the LCD window
  7009. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  7010.       a 640x200 virtual screen
  7011. --------b-1629------------------------------------
  7012. INT 16 - HUNTER 16 - GET KEY REPEAT
  7013.     AH = 29h
  7014. Return: BL = Typematic rate (characters per second) (see #0491)
  7015.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  7016. SeeAlso: AH=03h,AH=2Ah
  7017.  
  7018. (Table 0491)
  7019. Values for HUNTER 16 Typematic rate:
  7020.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  7021.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  7022.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  7023.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  7024.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  7025.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  7026.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  7027.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  7028. SeeAlso: AH=2Ah
  7029. --------b-162A------------------------------------
  7030. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  7031.     AH = 2Ah
  7032.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  7033. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  7034. --------b-162B------------------------------------
  7035. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  7036.     AH = 2Bh
  7037.     AL = which key table to redefine
  7038.         00h unshifted
  7039.         01h shifted
  7040.         02h Numlock
  7041.     BH = standard scan code of key (00h-80h)
  7042.     BL = new scan code
  7043. Desc:    redefine the generated scan code from BH to BL
  7044. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  7045. --------b-162C------------------------------------
  7046. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  7047.     AH = 2Ch
  7048.     AL = Matrix code of key (see AH=29h)
  7049.     BL = new key code
  7050. Return: AL = status (00h success, nonzero failed)
  7051. Desc:    redefine the key code generated by holding the PAW key down and
  7052.       pressing the key in AL
  7053. SeeAlso: AH=24h,AH=2Bh
  7054. --------b-162D------------------------------------
  7055. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  7056.     AH = 2Dh
  7057.     AL = enabled break keys
  7058.         bit 0 Ctrl-C
  7059.         bit 1 Ctrl-Break
  7060.     BX = 0708h
  7061.     CX = 0910h
  7062.     DX = 1112h
  7063. Return: AL = status (00h success, FFh failed)
  7064. SeeAlso: AH=21h"HUNTER"
  7065. --------U-163577-----------------------------
  7066. INT 16 U - TextWare TWTSR - API
  7067.     AX = 3577h
  7068.     CX = function
  7069.         00CBh ???
  7070.         Return: AX = 0000h
  7071.             BX = 0000h
  7072.             DX:CX -> ???
  7073.         00CCh uninstall
  7074.         Return: AX = status
  7075.                 0000h successful
  7076.                 FFFDh unable to unload because vectors taken
  7077.         00CDh ???
  7078.         Return: AX = 0000h
  7079.             BX = 0000h
  7080.             DX:CX -> ???
  7081.         other
  7082.         Return: AX = 5345h ('SE')
  7083. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  7084.       popped up via hotkey
  7085. SeeAlso: AX=D724h
  7086. --------U-164252-----------------------------
  7087. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  7088.     AX = 4252h
  7089. Return: AX = 5242h if installed
  7090. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
  7091.       the PC Magazine utility CAPTURE written by Tom Kihlken
  7092. SeeAlso: AX=4253h,AX=4254h
  7093. --------U-164253-----------------------------
  7094. INT 16 - TEXTCAP 2.0 - UNINSTALL
  7095.     AX = 4253h
  7096. Return: AX = segment of resident code
  7097. Notes:    the uninstall code does not check whether interrupt vectors have been
  7098.       chained by other programs
  7099.     the caller must free the main memory block (using the returned segment)
  7100. SeeAlso: AX=4252h,AX=4254h
  7101. --------U-164254-----------------------------
  7102. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  7103.     AX = 4254h
  7104. Return: AX = status
  7105.         4254h if screen dump will be written as soon as disk becomes idle
  7106.         5442h if screen dump written
  7107. SeeAlso: AX=4252h,AX=4253h
  7108. --------e-164500-----------------------------
  7109. INT 16 - Shamrock Software EMAIL - GET STATUS
  7110.     AX = 4500h
  7111.     DL = port number (01h = COM1)
  7112.     ES:BX -> 13-byte buffer for ASCIZ name
  7113. Return: AX = 4D00h if EMAIL installed on specified port
  7114.         ES:BX -> "" if no connection
  7115.           -> "*" if connection but caller has not identified name
  7116.           -> name otherwise
  7117.         CX = version (CH = major, CL = minor)
  7118.         DL = privilege level of user (00h = guest)
  7119.         DH = chosen language (00h German, 01h English)
  7120. SeeAlso: AX=4501h,AX=4502h
  7121. --------e-164501-----------------------------
  7122. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  7123.     AX = 4501h
  7124.     DL = port number (01h = COM1)
  7125. Return: AX = 4D00h if EMAIL installed on specified port
  7126.         BX = maximum connect time in clock ticks
  7127.         CX = maximum connect time for guests (without name) in clock ticks
  7128.         DX = elapsed connect time of current user in clock ticks
  7129. SeeAlso: AX=4500h
  7130. --------e-164502-----------------------------
  7131. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  7132.     AX = 4502h
  7133.     DL = port number (01h = COM1)
  7134. Return: AX = 4D00h if EMAIL installed on specified port
  7135.         BL = current value of serial port's Line Control Register
  7136.         BH = flags (see #0492)
  7137.         CX = selected country code (33 = France, 49 = Germany, etc)
  7138.         DX = baudrate divisor (115200/DX = baudrate)
  7139. SeeAlso: AX=4500h
  7140.  
  7141. Bitfields for Shamrock Software EMAIL flags:
  7142. Bit(s)    Description    (Table 0492)
  7143.  0    ISO code
  7144.  1    pause
  7145.  2    linefeed
  7146.  3    ANSI sequences
  7147. --------e-164503-----------------------------
  7148. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  7149.     AX = 4503h
  7150.     DL = port number (01h = COM1)
  7151.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  7152.     ES:BX -> ASCIZ string with new user command-word
  7153. Return: AX = 4D00h if EMAIL installed on specified port
  7154. Notes:    a single user command (consisting of only uppercase letters and digits)
  7155.       may be defined, and remains valid until it is overwritten or the
  7156.       EMAIL program terminates; the user command must be activated by
  7157.       calling AX=4504h at least once.
  7158.     an existing command word may be redefined with this function
  7159. SeeAlso: AX=4504h,AX=4505h
  7160. --------e-164504-----------------------------
  7161. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  7162.     AX = 4504h
  7163.     DL = port number (01h = COM1)
  7164.     ES:BX -> 80-byte buffer for ASCIZ user input line
  7165. Return: AX = 4D00h if EMAIL installed on specified port
  7166.         DL = flags
  7167.         bit 0: user function supported (always set)
  7168.         bit 1: user entered user-function command word
  7169.         if DL bit 1 set,
  7170.         ES:BX buffer contains line entered by user which begins with
  7171.             the defined command word and has been converted to all
  7172.             caps
  7173. Note:    caller must process the returned commandline and invoke AX=4505h
  7174.       within five seconds with the result of that processing
  7175. SeeAlso: AX=4503h,AX=4505h
  7176. --------e-164505-----------------------------
  7177. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  7178.     AX = 4505h
  7179.     DL = port number (01h = COM1)
  7180.     DH = error flag
  7181.         bit 3: set on error
  7182.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  7183. Return: AH = 4Dh if EMAIL installed on specified port
  7184.     AL = status
  7185.         00h successful
  7186.         02h unable to perform function (timeout, prev call not complete)
  7187.         other error
  7188. Notes:    if the error flag in DH is set, the string is not sent and an error
  7189.       message is generated instead; if this function is not called within
  7190.       five seconds of AX=4504h, EMAIL automatically generates an error
  7191.       message
  7192.     the string is copied into an internal buffer, allowing this function's
  7193.       caller to continue immediately
  7194. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  7195. --------e-164506-----------------------------
  7196. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  7197.     AX = 4506h
  7198.     DL = port number (01h = COM1)
  7199.     ES:BX -> 13-byte buffer for ASCIZ filename
  7200. Return: AX = 4D00h if EMAIL installed on specified port
  7201.         DH = Xmodem status
  7202.         00h no XGET command given
  7203.         01h XGET in progress
  7204.         02h XGET completed successfully
  7205.         ES:BX buffer filled with last filename given to XGET command
  7206.         (without path)
  7207. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  7208.       return DH=00h
  7209. SeeAlso: AX=4500h,INT 17/AX=2408h
  7210. --------K-164B-------------------------------
  7211. INT 16 - Frank Klemm Keyboard Driver v2.0 - API
  7212.     AH = 4Bh
  7213.     CX = code or action
  7214.         0000h-FEFFh key code
  7215.         FF00h-FFFFh action (see #3514)
  7216.     BL = scan code (normal keys) or scan code + 60h (enhanced keys)
  7217.     BH = shift state (see #3515)
  7218. Return: CX = previous code or action
  7219.  
  7220. (Table 3514)
  7221. Values for Frank Klemm Keyboard Driver action code:
  7222.  FF00h    no action
  7223.  FF01h    hardcopy
  7224.  FF02h    left shift
  7225.  FF03h    right shift
  7226.  FF04h    left Ctrl
  7227.  FF05h    right Ctrl
  7228.  FF06h    left Alt
  7229.  FF07h    right Alt / AltGr
  7230.  FF08h    CapsLock
  7231.  FF09h    NumLock
  7232.  FF0Ah    ScrlLock
  7233.  FF0Bh    Insert (returns code 5200h or 52E0h)
  7234.  FF0Ch    Pause
  7235.  FF0Dh    Ctrl-Break function
  7236.  FF0Eh    warm boot via far jump to F000h:FFF0h
  7237.  FF0Fh    terminate current program
  7238.  FF10h    key for entering keys via Alt-numpad (read-only)
  7239.  FF11h    clear keyboard buffer
  7240.  FF12h    reset (warmboot on XT)
  7241.  FF13h    mouse sensitivity (read-only)
  7242.  FF14h    keyjobs (read-only)
  7243.  FF15h    SysRq
  7244.  FF16h    turn on CPU cache (486+)
  7245.  FF17h    turn off CPU cache (486+)
  7246. SeeAlso: #3515
  7247.  
  7248. (Table 3515)
  7249. Values for Frank Klemm Keyboard Driver shift state:
  7250.  00h    no shift keys
  7251.  01h    either Shift
  7252.  02h    either Ctrl
  7253.  03h    left Alt
  7254.  04h    Ctrl + Alt
  7255. ---standard keyboard---
  7256.  05h    right Alt / AltGr
  7257. ---Russian keyboard---
  7258.  05h    Russian + no shift keys
  7259.  06h    Russian + either Shift
  7260. SeeAlso: #3514
  7261. --------K-164D4F-----------------------------
  7262. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  7263.     AX = 4D4Fh
  7264. Return: AX = 6F6Dh if installed
  7265.         ES = segment of resident code
  7266. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  7267. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  7268. --------J-165000-----------------------------
  7269. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  7270.     AX = 5000h
  7271.     BX = country code
  7272.         0001h USA (English), 0051h Japan
  7273. Return: AL = status
  7274.         00h successful
  7275.         01h bad country code
  7276.         02h other error
  7277. Notes:    the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
  7278.       supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
  7279.       Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
  7280.       <Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
  7281.     In transparent mode (BX=0001h), K3PLUS chains to the underlying
  7282.       driver (normally the BIOS driver with US-layout). K3PLUS beeps on
  7283.       mode changes
  7284. SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
  7285. --------J-165001-----------------------------
  7286. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  7287.     AX = 5001h
  7288. Return: AL = status
  7289.         00h successful
  7290.         BX = country code
  7291.         02h error
  7292. Note:    also supported by K3PLUS v6.00+
  7293. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  7294. --------J-1651-------------------------------
  7295. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  7296.     AH = 51h
  7297. Return: AL = standard shift key states (see #0481,#0486)
  7298.     AH = Kana lock (00h off, 01h on)
  7299. Note:    also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
  7300. SeeAlso: AH=02h,AH=12h,AH=22h
  7301. --------t-165453BX5242-----------------------
  7302. INT 16 - TSRBONES - INSTALLATION CHECK
  7303.     AX = 5453h ('TS')
  7304.     BX = 5242h ('RB')
  7305.     CX = 4F4Eh ('ON')
  7306.     DX = 4553h ('ES')
  7307. Return: AX = 4553h if installed
  7308.     BX = 4F4Eh if installed
  7309.     CX = 5242h if installed
  7310.     DX = 5453h if installed
  7311. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  7312. Note:    these values are the default as the TSRBONES package is distributed,
  7313.       but will normally be changed when implementing an actual TSR with
  7314.       the TSRBONES skeleton
  7315. SeeAlso: INT 2D/AL=00h"AMIS"
  7316. --------A-165500-----------------------------
  7317. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  7318.     AX = 5500h
  7319. Return: AX = 4D53h ('MS') if keyboard TSR present
  7320. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  7321.       that are present through this call.
  7322.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  7323.       handlers; otherwise it assumes that the TSR will handle the keyboard
  7324. SeeAlso: AX=55FFh,INT 1A/AX=3601h
  7325. --------A-1655FE-----------------------------
  7326. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
  7327.     AX = 55FEh
  7328.     DX = function
  7329.         0000h initialize
  7330.         ES:BX -> ??? function
  7331.         ES:CX -> ??? structure
  7332.         FFFFh shutdown/reset
  7333. Return: AX = result
  7334.         4D4Bh only the INT 1B handler will be installed.
  7335.         other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
  7336.           are installed
  7337. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  7338.       function when new keyboard keys are pressed. If a TSR returns
  7339.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  7340.     these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
  7341.       and before/after shelling out
  7342.     since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
  7343.       will also cause this interface to be invoked
  7344.     K3PLUS v6.07+ supports this function, but will never invoke the
  7345.       callback function
  7346. SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
  7347. --------U-1655FF-----------------------------
  7348. INT 16 C - Microsoft Word - TSR COOPERATION???
  7349.     AX = 55FFh
  7350.     BX >= 0004h (version of Microsoft Word [BL = major] ???)
  7351.     CX = function
  7352.         0000h set ??? flag
  7353.         other clear ??? flag
  7354. Notes:    hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
  7355.       distributed with PC Tools v7, as well as the Trusted Access
  7356.       SCRNBLNK.COM; this may be part of the standard TesSeRact library
  7357.     known to be called by the German edition of Microsoft Word 5.0
  7358. SeeAlso: AX=5500h,INT 2F/AX=5453h
  7359. --------c-165758BX4858-----------------------
  7360. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  7361.     AX = 5758h
  7362.     BX = 4858h ('HX')
  7363.     DX = 4443h ('DC')
  7364.     CX <> 5758h
  7365. Return: BX = 6878h if installed
  7366.     CX = 6463h if installed
  7367.         AX = code segment of TSR
  7368.         CX = internal version??? (v3.00 returns 0100h)
  7369. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  7370. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  7371.     the cache statistics are located early in the segment pointed at by
  7372.       AX on return
  7373. SeeAlso: INT 2F/AX=5758h
  7374. --------m-165758BX5754-----------------------
  7375. INT 16 U - Netroom ??? - ???
  7376.     AX = 5758h
  7377.     BX = 5754h
  7378.     ???
  7379. Return: ???
  7380. --------m-165758BX5755-----------------------
  7381. INT 16 U - Netroom ??? - ???
  7382.     AX = 5758h
  7383.     BX = 5755h
  7384.     DS:SI -> ???
  7385. Return: ???
  7386. --------m-165758BX5756-----------------------
  7387. INT 16 U - Netroom ??? - INSTALLATION CHECK
  7388.     AX = 5758h
  7389.     BX = 5756h
  7390. Return: BX <> 5756h if installed
  7391. --------m-165758BX5858-----------------------
  7392. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  7393.     AX = 5758h
  7394.     BX = 5858h
  7395. Return: CF clear
  7396.     DX:BX -> saved copy of interrupt vector table
  7397. Note:    the installation check consists of calling this function and comparing
  7398.       BX against 5858h on return; if it has changed, PRENET is installed
  7399. SeeAlso: AX=5758h/BX=5859h
  7400. Index:    installation check;Netroom PRENET
  7401. --------m-165758BX5859-----------------------
  7402. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  7403.     AX = 5758h
  7404.     BX = 5859h
  7405. Return: CF clear
  7406.     DX:BX -> saved copy of interrupt vector table
  7407. Note:    the installation check consists of calling this function and comparing
  7408.       BX against 5859h on return; if it has changed, POSTNET is installed
  7409. SeeAlso: AX=5758h/BX=5858h
  7410. Index:    installation check;Netroom POSTNET
  7411. --------U-166969BX6968-----------------------
  7412. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  7413.     AX = 6969h
  7414.     BX = 6968h
  7415. Return: resident code unhooked, but not removed from memory
  7416. Index:    uninstall;BACKTALK
  7417. --------U-166969BX6969-----------------------
  7418. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  7419.     AX = 6969h
  7420.     BX = 6969h
  7421.     DX = 0000h
  7422. Return: DX nonzero if installed
  7423.         BX = CS of resident code
  7424.         DX = PSP segment of resident code
  7425.         DS:SI -> ASCIZ identification string "CPoint Talk"
  7426. --------i-166A6B-----------------------------
  7427. INT 16 U - FastJuice - DISABLE/UNLOAD???
  7428.     AX = 6A6Bh
  7429. Return: ???
  7430. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  7431. SeeAlso: AX=7463h
  7432. Index:    uninstall;FastJuice
  7433. --------G-166C63-----------------------------
  7434. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  7435.     AX = 6C63h ('lc')
  7436. Return: AX = 4C43h ('LC') if installed
  7437. Program: TMED is a freeware resident memory editor by Liang Chen
  7438. --------U-166D74-----------------------------
  7439. INT 16 - MTRTSR - INSTALLATION CHECK
  7440.     AX = 6D74h ('mt')
  7441. Return: AX = 4D54h ('MT') if installed
  7442. Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which
  7443.       permits searching the large corpus of classical Hebrew texts in the
  7444.       package
  7445. SeeAlso: INT 10/AX=6D74h"MTRFONTS"
  7446. --------b-166F00-----------------------------
  7447. INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK
  7448.     AX = 6F00h
  7449.     BX <> 4850h (usually set to 0000h for simplicity)
  7450. Return: BX = 4850h ("HP") if present
  7451. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  7452.     supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7453. SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h
  7454. SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
  7455. SeeAlso: INT 6F/AH=00h"HP Vectra"
  7456. --------b-166F01-----------------------------
  7457. INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES
  7458.     AX = 6F01h
  7459. Return: AH = 00h (successful)
  7460.     CX = 0004h (size of returned buffer)
  7461.     ES:SI -> buffer for typematic info (see #0493)
  7462. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7463. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  7464.  
  7465. Format of HP Vectra EX-BIOS typematic info:
  7466. Offset    Size    Description    (Table 0493)
  7467.  00h    BYTE    delay before repeat for all non-Cursor Control Pad keys
  7468.         (see #0494)
  7469.  01h    BYTE    typematic rate for all non-Cursor Control Pad keys (see #0495)
  7470.  02h    BYTE    delay before repeat for Cursor Control Pad keys    (see #0496)
  7471.  03h    BYTE    typematic rate for Cursor Control Pad keys (see #0495)
  7472.  
  7473. (Table 0494)
  7474. Values for HP Vectra EX-BIOS non-CCP delay time:
  7475.  00h    17 ms
  7476.  01h    150 ms
  7477.  02h    283 ms
  7478.  03h    417 ms
  7479.  04h    550 ms
  7480.  05h    683 ms
  7481.  06h    817 ms
  7482.  07h    950 ms
  7483.  08h    1083 ms
  7484.  09h    1217 ms
  7485.  0Ah    1350 ms
  7486.  0Bh    1483 ms
  7487.  0Ch    1617 ms
  7488.  0Dh    1750 ms
  7489.  0Eh    1883 ms
  7490.  0Fh    2017 ms
  7491. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  7492.       double the times if set to 30 Hz
  7493. SeeAlso: #0493,#0495,#0496
  7494.  
  7495. (Table 0495)
  7496. Values for HP Vectra EX-BIOS typematic rate:
  7497.  00h    60 / sec
  7498.  01h    30 / sec
  7499.  02h    20
  7500.  03h    15
  7501.  04h    12
  7502.  05h    10
  7503.  06h    8.57
  7504.  07h    7.5
  7505.  08h    6.66
  7506.  09h    6 / sec
  7507.  0Ah    5.45
  7508.  0Bh    5
  7509.  0Ch    4.62
  7510.  0Dh    4.28
  7511.  0Eh    4 / sec
  7512.  0Fh    typematic disabled
  7513. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  7514.       halve the rates if set to 30 Hz
  7515. SeeAlso: #0494,#0496
  7516.  
  7517. (Table 0496)
  7518. Values for HP Vectra EX-BIOS CCP delay time:
  7519.  00h    17 ms
  7520.  01h    83 ms
  7521.  02h    150 ms
  7522.  03h    217 ms
  7523.  04h    283 ms
  7524.  05h    350 ms
  7525.  06h    417 ms
  7526.  07h    483 ms
  7527.  08h    550 ms
  7528.  09h    617 ms
  7529.  0Ah    683 ms
  7530.  0Bh    750 ms
  7531.  0Ch    817 ms
  7532.  0Dh    883 ms
  7533.  0Eh    950 ms
  7534.  0Fh    1017 ms
  7535. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  7536.       double the times if set to 30 Hz
  7537. SeeAlso: #0494,#0495
  7538. --------b-166F02-----------------------------
  7539. INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES
  7540.     AX = 6F02h
  7541. Return: AH = 00h (successful)
  7542.     CX = 0004h (size of returned buffer)
  7543.     ES:SI -> buffer for typematic info (see #0493)
  7544. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7545. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  7546. SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h
  7547. --------b-166F03-----------------------------
  7548. INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES
  7549.     AX = 6F03h
  7550.     ES:SI -> buffer containing typematic info (see #0493)
  7551. Return: AH = 00h (successful)
  7552. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7553. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  7554. SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h
  7555. --------b-166F04-----------------------------
  7556. INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS
  7557.     AX = 6F04h
  7558.     ES:SI -> mapping buffer (see #0497)
  7559. Return: AH = 00h (successful)
  7560.     CX = 001Eh (number of bytes in buffer)
  7561.     ES:SI buffer filled
  7562. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7563.     the HIL input system translates the HIL keyboard events to simulate
  7564.       an IBM-compatible keyboard; the translation can be altered
  7565.       dynamically by applications
  7566. SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h
  7567.  
  7568. Format of HP Vectra EX-BIOS keyboard mapping info:
  7569. Offset    Size    Description    (Table 0497)
  7570.  00h  3 WORDs    entry for V_QWERTY driver (IP, CS, DS)
  7571.  06h  3 WORDs    entry for V_SOFTKEY driver (IP, CS, DS)
  7572.  0Ch  3 WORDs    entry for V_FUNCTION driver
  7573.  12h  3 WORDs    entry for V_NUMPAD driver
  7574.  18h  3 WORDs    entry for V_CCP driver
  7575. --------b-166F05-----------------------------
  7576. INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS
  7577.     AX = 6F05h
  7578.     ES:SI -> mapping buffer (see #0497)
  7579. Return: AH = 00h (successful)
  7580.     CX = 001Eh (number of bytes in buffer)
  7581.     ES:SI buffer filled
  7582. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7583. SeeAlso: AX=6F04h,AX=6F06h
  7584. --------b-166F06-----------------------------
  7585. INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS
  7586.     AX = 6F06h
  7587.     CX = number of bytes in buffer (001Eh)
  7588.     ES:SI -> mapping buffer (see #0497)
  7589. Return: AH = 00h (successful)
  7590. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7591.     any application which modifies the key mappings should restore them
  7592.       before terminating
  7593.     drivers installed with this function are assured of 32 bytes of stack
  7594.       space when they are invoked
  7595. SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h
  7596. --------b-166F07-----------------------------
  7597. INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS
  7598.     AX = 6F07h
  7599.     BL = translation to set (see #0498)
  7600. Return: AH = 00h (successful)
  7601. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7602.     this function may no longer work properly if the application has
  7603.       modified the key mappings with AX=6F06h
  7604. SeeAlso: AX=6F06h,AX=6F09h
  7605.  
  7606. (Table 0498)
  7607. Values for HP Vectra keyboard translation specifier:
  7608.  00h    map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys
  7609.  01h    map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers
  7610.  02h    map V_CCP to V_OFF, disabling the cursor pad
  7611.  03h    map V_CCP to V_CCPGID, converting cursor pad keys to GID data
  7612.  04h    map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09
  7613.  05h    map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys
  7614.  06h    map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09
  7615.  07h    map V_SOFTKEY to V_OFF, disabling HP Softkeys
  7616. SeeAlso: #0499
  7617.  
  7618. (Table 0499)
  7619. Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator:
  7620.           INT 09         INT 16 keycode
  7621.     Key         scan code    Default     Shifted   Ctrl         Alt
  7622.  * (NumPd)    37h    2Ah     (Prt Sc)  00/72h    00/37H
  7623.  Sysreq        54h      --     --       --         --
  7624.  CCP-Up        60h    00/D9h     00/BFh       00/A5h    00/8BH
  7625.  CCP-Left    61h    00/DAh     00/C0h       00/A6h    00/8CH
  7626.  CCP-Down    62h    00/DBh     00/C1h       00/A7h    00/8DH
  7627.  CCP-Right    63h    00/DCh     00/C2h       00/A8h    00/8EH
  7628.  CCP-Home    64h    00/DDh     00/C3h       00/A9h    00/8FH
  7629.  CCP-PgUp    65h    00/DEh     00/C4h       00/AAh    00/90H
  7630.  CCP-End    66h    00/DFh     00/C5h       00/ABh    00/91H
  7631.  CCP-PgDn    67h    00/E0h     00/C6h       00/ACh    00/92H
  7632.  CCP-Ins    68h    00/E1h     00/C7h       00/ADh    00/93H
  7633.  CCP-Del    69h    00/E2h     00/C8h       00/AEh    00/94H
  7634.  CCP-CNTR    6Ah    00/E3h     00/C9h       00/AFh    00/95H
  7635.  f1        70h    00/E9h     00/CFh       00/B5h    00/9BH
  7636.  f2        71h    00/EAh     00/D0h       00/B6h    00/9CH
  7637.  f3        72h    00/EBh     00/D1h       00/B7h    00/9DH
  7638.  f4        73h    00/ECh     00/D2h       00/B8h    00/9EH
  7639.  f5        74h    00/EDh     00/D3h       00/B9h    00/9FH
  7640.  f6        75h    00/EEh     00/D4h       00/BAh    00/A0H
  7641.  f7        76h    00/EFh     00/D5h       00/BBh    00/A1H
  7642.  f8        77h    00/F0h     00/D6h       00/BCh    00/A2H
  7643. Note:    only HP-specific codes are listed in this table; see INT 09 for a full
  7644.       list of standard scan codes
  7645. SeeAlso: #0005,#0498
  7646. --------b-166F08-----------------------------
  7647. INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION
  7648.     AX = 6F08h
  7649. Return: AH = status
  7650.        00h successful
  7651.        02h unsupported (non-HIL, i.e. standard, keyboard)
  7652.     BH = HP-HIL address (HP Vectra AT only???)
  7653.     BL = HP-HIL ID (HP Vectra AT only???)
  7654.     BL = keyboard language (ES/QS/RS only???) (see #0500)
  7655. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7656.     the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may
  7657.       be computed as (BH-1)*6 + N, where N is the address of the first
  7658.       HP-HIL device driver (see INT 6F/AH=0Ah"F_INQUIRE_FIRST")
  7659. SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"F_INQUIRE_FIRST"
  7660.  
  7661. (Table 0500)
  7662. Values for HP HIL keyboard language code:
  7663.  00h    reserved
  7664.  01h    Arabic-French
  7665.  02h    Kanji
  7666.  03h    Swiss-French
  7667.  04h    Portugese
  7668.  05h    Arabic
  7669.  06h    Hebrew
  7670.  07h    Canadian-English
  7671.  08h    Turkish
  7672.  09h    Greek
  7673.  0Ah    Thai
  7674.  0Bh    Italian
  7675.  0Ch    Hangul (Korean)
  7676.  0Dh    Dutch
  7677.  0Eh    Swedish
  7678.  0Fh    German
  7679.  10h    Chinese (PRC)
  7680.  11h    Chinese (Taiwan)
  7681.  12h    Swiss (French ii)
  7682.  13h    Spanish
  7683.  14h    Swiss (German ii)
  7684.  15h    Belgian (Flemish)
  7685.  16h    Finish
  7686.  17h    United Kingdom
  7687.  18h    French-Canadian
  7688.  19h    French-German
  7689.  1Ah    Norwegian
  7690.  1Bh    French
  7691.  1Ch    Danish
  7692.  1Dh    Katakana
  7693.  1Eh    Latin American Spanish
  7694.  1Fh    United States-American
  7695.  20h-FEh reserved
  7696.  FFh    non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard)
  7697. --------b-166F09-----------------------------
  7698. INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS
  7699.     AX = 6F09h
  7700. Return: AH = 00h (successful)
  7701. Desc:    reset all keyboard mappings to their default translators, and reset
  7702.       typematic values to their defaults
  7703. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7704. SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h
  7705. --------b-166F0A-----------------------------
  7706. INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED
  7707.     AX = 6F0Ah
  7708. Return: AH = 00h (successful)
  7709.     BX = speed code
  7710.         0Bh for low speed (see #0501)
  7711.         12h for medium speed (see #0501)
  7712.         0Ch for high speed (see #0501)
  7713. Note:    supported by ES, QS, and RS series of HP Vectras
  7714. SeeAlso: AX=6F00h
  7715.  
  7716. (Table 0501)
  7717. Values for HP Vetra CPU speed:
  7718.     Vectra        Low        Medium    High
  7719.     ES        8 MHz         -         8 MHz
  7720.     ES/12        8 MHz         -        12 MHz
  7721.     QS/16, RS/16    8 MHz         -        16 MHz
  7722.     QS/16S        8 MHz         -        16 MHz
  7723.     QS/20, RS/20    8 MHz         -        20 MHz
  7724.     RS/20C        5 MHz        10 MHz    20 MHz
  7725.     RS/25C        5 MHz        12.5 MHz    25 MHz
  7726. --------b-166F0B-----------------------------
  7727. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW
  7728.     AX = 6F0Bh
  7729. Return: AH = 00h (successful)
  7730. Notes:    see AX=6F0Ah for speed definitions
  7731.     supported by ES, QS, and RS series of HP Vectras
  7732. SeeAlso: AX=6F00h,AX=6F0Ah
  7733. --------b-166F0C-----------------------------
  7734. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH
  7735.     AX = 6F0Ch
  7736. Return: AH = 00h (successful)
  7737. Notes:    see AX=6F0Ah for speed definitions
  7738.     supported by ES, QS, and RS series of HP Vectras
  7739. SeeAlso: AX=6F00h,AX=6F0Ah
  7740. --------b-166F0D-----------------------------
  7741. INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER
  7742.     AX = 6F0Dh
  7743. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  7744. Notes:    supported by ES, QS, and RS series of HP Vectras
  7745.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  7746.       input system
  7747. SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F/AH=00h"HP Vectra",INT 6F/AH=0Ah"HP"
  7748. --------b-166F0E-----------------------------
  7749. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER
  7750.     AX = 6F0Eh
  7751.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  7752. Return: AH = status (00h = successful)
  7753. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  7754.       number in case of an interrupt conflict with another application
  7755. Notes:    supported by ES, QS, and RS series of HP Vectras
  7756.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  7757.       input system
  7758. SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F/AH=00h"HP",INT 6F/AH=0Ah"HP"
  7759. --------b-166F0F-----------------------------
  7760. INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING
  7761.     AX = 6F0Fh
  7762. Return: AH = status
  7763.         00h successful
  7764.         FEh cache subsystem is bad
  7765. SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h
  7766. --------b-166F10-----------------------------
  7767. INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING
  7768.     AX = 6F10h
  7769. Return: AH = 00h (successful)
  7770. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h
  7771. --------b-166F11-----------------------------
  7772. INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE
  7773.     AX = 6F11h
  7774. Return: AH = 00h (successful)
  7775.     AL bit 0 = cache state
  7776.         0 cache disabled
  7777.         1 cache enabled
  7778. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h
  7779. --------b-166F12-----------------------------
  7780. INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM
  7781.     AX = 6F12h
  7782. Return: AH = 00h (successful)
  7783. Note:    see AX=6F0Ah for speed definitions
  7784. SeeAlso: AX=6F00h,AX=6F0Ah
  7785. --------K-1670-------------------------------
  7786. INT 16 - FAKEY.COM - INSTALLATION CHECK
  7787.     AH = 70h
  7788. Return: AX = 1954h if installed
  7789. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7790. --------K-1671-------------------------------
  7791. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  7792.     AH = 71h
  7793.     CX = number of keystrokes
  7794.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  7795. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7796. SeeAlso: AH=05h,AH=72h
  7797. --------K-1672-------------------------------
  7798. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  7799.     AH = 72h
  7800. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7801. SeeAlso: AH=71h
  7802. --------K-1673-------------------------------
  7803. INT 16 - FAKEY.COM - PLAY TONES
  7804.     AH = 73h
  7805.     CX = number of tones to play
  7806.     DS:SI -> array of tones (see #0502)
  7807. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7808. SeeAlso: INT 15/AX=1019h
  7809.  
  7810. Format of FAKEY.COM tone array entries:
  7811. Offset    Size    Description    (Table 0502)
  7812.  00h    WORD    divisor for timer channel 2
  7813.  02h    WORD    duration in clock ticks
  7814. --------i-167463-----------------------------
  7815. INT 16 U - FastJuice - INSTALLATION CHECK
  7816.     AX = 7463h ("tc")
  7817. Return: AX = 5443h ("TC") if installed
  7818. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  7819. SeeAlso: AX=6A6Bh
  7820. --------R-1675-------------------------------
  7821. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  7822.     AH = 75h
  7823.     AL = number of ticks between checks for new screen changes
  7824. --------R-1676-------------------------------
  7825. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  7826.     AH = 76h
  7827.     AL = error checking type
  7828.         00h none
  7829.         01h fast
  7830.         02h slow
  7831. --------R-1677-------------------------------
  7832. INT 16 - pcANYWHERE III - LOG OFF
  7833.     AH = 77h
  7834.     AL = mode
  7835.         00h wait for another call
  7836.         01h leave in Memory Resident Mode
  7837.         02h leave in Automatic Mode
  7838.         FFh leave in current operating mode
  7839. --------U-167761-----------------------------
  7840. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  7841.     AX = 7761h ('wa')
  7842. Return: AX = 5741h ('WA') if installed
  7843. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  7844. SeeAlso: INT 21/AX=7761h
  7845. --------U-167788BX7789-----------------------
  7846. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  7847.     AX = 7788h
  7848.     BX = 7789h
  7849.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  7850. Return: AX = 7789h if installed and signature correct
  7851.     BX = 7788h
  7852.     SI destroyed
  7853. --------R-1679-------------------------------
  7854. INT 16 - pcANYWHERE III - CHECK STATUS
  7855.     AH = 79h
  7856. Return: AX = status
  7857.         FFFFh if resident and active
  7858.         FFFEh if resident but not active
  7859.         FFFDh if in Memory Resident mode
  7860.         FFFCh if in Automatic mode
  7861.         other value if not resident
  7862. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  7863. --------R-167A-------------------------------
  7864. INT 16 - pcANYWHERE III - CANCEL SESSION
  7865.     AH = 7Ah
  7866. --------R-167B00-----------------------------
  7867. INT 16 - pcANYWHERE III - SUSPEND
  7868.     AX = 7B00h
  7869. SeeAlso: AH=79h,AX=7B01h
  7870. --------R-167B01-----------------------------
  7871. INT 16 - pcANYWHERE III - RESUME
  7872.     AX = 7B01h
  7873. SeeAlso: AH=79h,AX=7B00h
  7874. --------R-167C-------------------------------
  7875. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  7876.     AH = 7Ch
  7877. Return: AH = port number
  7878.     AL = baud rate (see #0503)
  7879. SeeAlso: AX=7B00h,AH=7Eh
  7880.  
  7881. (Table 0503)
  7882. Values for pcANYWHERE III baud rate:
  7883.  00h    50 baud
  7884.  01h    75 baud
  7885.  02h    110 baud
  7886.  03h    134.5 baud
  7887.  04h    150 baud
  7888.  05h    300 baud
  7889.  06h    600 baud
  7890.  07h    1200 baud
  7891.  08h    1800 baud
  7892.  09h    2000 baud
  7893.  0Ah    2400 baud
  7894.  0Bh    4800 baud
  7895.  0Ch    7200 baud
  7896.  0Dh    9600 baud
  7897.  0Eh    19200 baud
  7898. SeeAlso: #0213
  7899. --------R-167D-------------------------------
  7900. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  7901.     AH = 7Dh
  7902.     AL = subfunction
  7903.         00h set terminal parameters
  7904.         01h get terminal parameters
  7905.         02h get configuration header and terminal parameters
  7906.     DS:CX -> terminal parameter block
  7907. SeeAlso: AH=7Ch,AH=7Eh
  7908. --------R-167E-------------------------------
  7909. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  7910.     AH = 7Eh
  7911.     AL = subfunction
  7912.         01h port input status
  7913.         Return AX = 0 if no characer ready,
  7914.                AX = 1 if character ready
  7915.         02h port input character
  7916.         Return AL = received character
  7917.         03h port output character in CX
  7918.         11h hang up phone
  7919. SeeAlso: AH=7Ch
  7920. --------R-167F-------------------------------
  7921. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  7922.     AH = 7Fh
  7923.     AL = subfunction
  7924.         00h enable remote keyboard only
  7925.         01h enable host keyboard only
  7926.         02h enable both keyboards
  7927.         08h display top 24 lines
  7928.         09h display bottom 24 lines
  7929.         10h Hayes modem
  7930.         11h other modem
  7931.         12h direct connect
  7932. --------U-1680-------------------------------
  7933. INT 16 - MAKEY.COM - INSTALLATION CHECK
  7934.     AH = 80h
  7935. Return: AX = 1954h if installed
  7936. Program: MAKEY is a utility by System Enhancement Associates
  7937. --------K-1687-------------------------------
  7938. INT 16 - DK.COM v1.03 - INSTALLATION CHECK
  7939.     AH = 87h
  7940. Return: AX = 4A57h ('JW') if installed
  7941. Program: DK.COM is the resident part of a small keyboard macro utility
  7942.       by Digital Mechanics.
  7943. --------U-168765BX4321-----------------------
  7944. INT 16 - AT.COM version 8/26/87 - API
  7945.     AX = 8765h
  7946.     BX = 4321h
  7947.     CX = ??? or FFFFh
  7948.     if CX = FFFFh
  7949.         DX = number of event to remove or FFFFh
  7950. Return: ES:BX -> event record array (see #0504)
  7951. Program: AT.COM is a resident scheduler by Bill Frolik
  7952.  
  7953. Format of AT.COM event record:
  7954. Offset    Size    Description    (Table 0504)
  7955.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  7956.  01h    BYTE    day of date on which to trigger
  7957.  02h    BYTE    month of date on which to trigger
  7958.  03h    BYTE    trigger time, minute
  7959.  04h    BYTE    trigger time, hour
  7960.  05h    WORD    offset of command to be executed
  7961. --------K-1692-------------------------------
  7962. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  7963.     AH = 92h
  7964. Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported
  7965. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  7966.       to determine the highest supported keyboard function
  7967. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  7968.       destroy AH on return from functions higher than AH=12h, returning
  7969.       12h less than was in AH on entry (due to a chain of DEC/JZ
  7970.       instructions)
  7971. SeeAlso: AH=05h"PCjr",AH=A2h,INT 2F/AX=AD80h
  7972. --------U-1699-------------------------------
  7973. INT 16 - SCOUT v5.4 - GET ???
  7974.     AH = 99h
  7975. Return: AX = ABCDh
  7976.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  7977. Program: Scout is a memory-resident file manager by New-Ware
  7978. SeeAlso: AH=9Eh
  7979. --------U-169E-------------------------------
  7980. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  7981.     AH = 9Eh
  7982. Return: AX = ABCDh if installed
  7983. Program: Scout is a memory-resident file manager by New-Ware
  7984. SeeAlso: AH=99h
  7985. --------K-16A2-------------------------------
  7986. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  7987.     AH = A2h
  7988. Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported
  7989. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  7990.       to determine the highest supported keyboard function
  7991. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  7992.       destroy AH on return from functions higher than AH=12h, returning
  7993.       12h less than was in AH on entry (due to a chain of DEC/JZ
  7994.       instructions)
  7995. SeeAlso: AH=05h"PCjr",AH=92h,INT 2F/AX=AD80h
  7996. --------V-16AA-------------------------------
  7997. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  7998.     AH = AAh
  7999.     Various registers set up by high level language.
  8000. Return: Graphics performed
  8001. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  8002.       Modula 2 and others from DataBiten in Sweden. The library is
  8003.       installed as a memory resident driver.
  8004. --------U-16AABBBXEEFF-----------------------
  8005. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  8006.     AX = AABBh
  8007.     BX = EEFFh
  8008. Return: AX = EEFFh if installed
  8009.     BX = AABBh if installed
  8010.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  8011. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  8012.       Co.
  8013. Index:    hotkeys;JORJ
  8014. --------K-16AF20BX4B33-----------------------
  8015. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
  8016.     AX = AF20h
  8017.     BX = 4B33h ('K3')
  8018. Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
  8019.     ES:BX -> extended keyboard buffer start
  8020.     ES:DX -> extended keyboard buffer end
  8021.     ES:SI -> next keystroke
  8022.     ES:DI -> last keystroke in buffer
  8023.     CX = number of keystrokes in buffer
  8024. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  8025.       Frinke, originally based on the K3 extended German keyboard driver
  8026.       by Martin Gerdes published in c't magazine in 1988
  8027. Note:    this function replaces the identical function AH=20h"K3"
  8028. SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h
  8029. --------K-16AF25BX4B33-----------------------
  8030. INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
  8031.     AX = AF25h
  8032.     BX = 4B33h ('K3')
  8033.     CX = number of keystrokes to copy
  8034.     ES:SI -> buffer containing keystrokes
  8035. Return: CF clear if successful
  8036.     CF set on error (i.e. buffer full)
  8037.         CX = number of keystrokes NOT transferred
  8038.         ES:SI -> first keystroke not transferred
  8039. Note:    this function replaces the identical function AH=25h"K3"
  8040. SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h
  8041. --------K-16AF4DBX4B33-----------------------
  8042. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
  8043.     AX = AF4Dh
  8044.     BX = 4B33h ('K3')
  8045. Return: AL = 50h if installed
  8046.         BX = K3 version
  8047.         DX = API version
  8048.         ES:CX -> K3 structure (version-dependent) (see #0505)
  8049. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  8050.       Frinke, originally based on the K3 extended German keyboard driver
  8051.       by Martin Gerdes published in c't magazine in 1988
  8052. SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF82h/BX=4B33h,INT 2F/AX=D44Fh/BX=0000h
  8053. SeeAlso: INT 2F/AX=ED58h
  8054. Index:    installation check;K3PLUS
  8055.  
  8056. Format of internal K3 structure:
  8057. Offset    Size    Description    (Table 0505)
  8058.  00h  3 BYTEs    signature "K3$"
  8059.  03h    BYTE    length of structure, including this byte and signature
  8060.  04h    WORD    compiler switch option flags A (see #0506)
  8061.  06h    WORD    compiler switch option flags B (see #0507)
  8062.  08h    BYTE    internal flags A (see #0508)
  8063.  09h    BYTE    internal flags B (see #0509)
  8064.  0Ah    WORD    DOS version recorded at startup
  8065.  0Ch    WORD    "ActTypeSpeed"
  8066.  0Eh    WORD    last Keyboard-ID sent
  8067.         41ABh translated, 83ABh native (pass-through)
  8068.  10h    WORD    offset of K3TAB Special
  8069.  12h    WORD    offset of K3TAB German
  8070.  14h    WORD    offset of K3TAB Alt
  8071.  16h    WORD    offset of K3TAB AltGr
  8072.  18h    WORD    offset of K3TAB Ctrl
  8073.  1Ah    WORD    offset of K3TAB NPad
  8074.  1Ch    WORD    offset of K3TAB CtrlNPad
  8075.  1Eh    WORD    offset of K3TAB AltNPad
  8076.  20h    WORD    offset of K3TAB ApoTbl or 0000h
  8077.  22h    WORD    offset of K3TAB UmlautTbl or 0000h
  8078.  24h    WORD    offset of K3TAB UmlautTblExp or 0000h
  8079.  26h    WORD    length of video mode table
  8080.  28h    WORD    offset of VidMdTbl or 0000h
  8081.  2Ah    BYTE    '$' end marker
  8082.  
  8083. Bitfields for K3PLUS compiler switch option flags A:
  8084. Bit(s)    Description    (Table 0506)
  8085.  15    GuINT16Fct2 (general use of INT 16 function 2)
  8086.  14    Int15df (INT 15 has to be predefined)
  8087.  13    GuAltNP (general use of Alt Numpad)
  8088.  12    SupAT (ATs+ supported)
  8089.  11    GuINT16Fct3 (general use of INT 16 function 3)
  8090.  10    GuINT16Ret (general use of INT16 bad function return)
  8091.  9-8    Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
  8092.  7    ForceMF (force MF decode without read-ID)
  8093.  6    KXlate (translate keys for special keyboard)
  8094.  5    UmlautX (umlaut translation capability included)
  8095.  4    ApoX (translate apostrophe)
  8096.  3    DoINT16 (INT 16 handler included)
  8097.  2    UseCC (CopyCursor included)
  8098.  1-0    UseEB
  8099.     0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
  8100.  
  8101. Bitfields for K3 compiler switch option flags B:
  8102. Bit(s)    Description    (Table 0507)
  8103.  15-11    reserved (0)
  8104.  10    CtrlSeq (Ctrl macro capability included)
  8105.  9-8    SupINT16fct55FE
  8106.  6    DoInstallCheck (check for double installation)
  8107.  5    SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
  8108.  4    SendOut (sound and message output supported)
  8109.  3    SupInt16fct5500 (INT 16/AX=5500h supported)
  8110.  2    GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
  8111.  1-0    UseBufferStart (0=use standard area, 1=set standard area,
  8112.     2=use internal indexes, 3=reserved)
  8113.  
  8114. Bitfields for K3 internal flags A:
  8115. Bit(s)    Description    (Table 0508)
  8116.  7    DoingUmlautExp
  8117.  6    CallINT15fct4F
  8118.  5    Beep1 (requires SendOut set in option flags B)
  8119.  4    ATflag (set for AT, 386, PS/2 Models 50-80)
  8120.  3    XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
  8121.  2    KeyClick
  8122.  1    UmlautExp
  8123.  0    UmlautTrans
  8124.  
  8125. Bitfields for K3 internal flags B:
  8126. Bit(s)    Description    (Table 0509)
  8127.  7-5    reserved
  8128.  4    TranslateE0 enabled
  8129.  3    Boot enabled
  8130.  2    PrintScreen enabled
  8131.  1    Break enabled
  8132.  0    ApoPendingBeep
  8133. --------K-16AF50BX4B33-----------------------
  8134. INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
  8135.     AX = AF50h
  8136.     BX = 4B33h ('K3')
  8137.     CH = function
  8138.         00h get function flags
  8139.         CL = 00h
  8140.         Return: CX = supported function flags (see #0510)
  8141.         nonzero reserved for extensions
  8142. SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
  8143.  
  8144. Bitfields for K3PLUS supported function list:
  8145. Bit(s)    Description    (Table 0510)
  8146.  0    function 4Dh supported
  8147.  1    function 50h supported
  8148.  2-3    reserved (0)
  8149.  4    function 20h supported
  8150.  5    function 25h supported
  8151.  6    function 51h supported
  8152.  7    reserved (0)
  8153.  8    function 80h supported
  8154.  9    function 81h supported
  8155.  10    function 82h supported
  8156.  11-15    reserved (0)
  8157. --------K-16AF51BX4B33-----------------------
  8158. INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS
  8159.     AX = AF51h
  8160.     BX = 4B33h ('K3')
  8161.     CX = switches
  8162. Return: AL = status
  8163.         00h done
  8164.         CX = previous switch settings
  8165.         01h switch not supported
  8166.         FFh other error
  8167. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
  8168. --------K-16AF80BX4B33-----------------------
  8169. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR
  8170.     AX = AF80h
  8171.     BX = 4B33h ('K3')
  8172. Return: AL = status
  8173.         00h not supported
  8174.         81h if successful
  8175.         ES:CX -> original INT 09 handler
  8176. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
  8177. --------K-16AF81BX4B33-----------------------
  8178. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER
  8179.     AX = AF81h
  8180.     BX = 4B33h ('K3')
  8181. Return: AL = status
  8182.         00h not supported
  8183.         82h if successful
  8184.         ES:CX -> original INT 16 handler
  8185. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
  8186. --------K-16AF82BX4B33-----------------------
  8187. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER
  8188.     AX = AF82h
  8189.     BX = 4B33h ('K3')
  8190. Return: AL = status
  8191.         00h not supported
  8192.         83h if successful
  8193.         ES:CX -> original INT 10 handler
  8194. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  8195.       Frinke, originally based on the K3 extended German keyboard driver
  8196.       by Martin Gerdes published in c't magazine in 1988
  8197. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h
  8198. --------m-16B0B1-----------------------------
  8199. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  8200.     AX = B0B1h
  8201.     ES:DI -> 6 byte signature "VGARAM"
  8202. Return: AX = B1B0h if installed,
  8203.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  8204. Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
  8205.       not used in text modes available for DOS
  8206. --------K-16CA--BX736B-----------------------
  8207. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  8208.     AH = CAh
  8209.     BX = 736Bh ("sk")
  8210.     CX = 736Bh
  8211.     AL = function
  8212.         00h installation check
  8213.         Return: DX = words available in keyboard buffer
  8214.         01h place keystroke in buffer
  8215.         DX = keystroke (DH = scan code, DL = ASCII character)
  8216.         Return: DX = words available in keyboard buffer
  8217.                 FFFFh on error
  8218.         02h flush STACKEY and BIOS keyboard buffers
  8219. Return: AX = CAFFh if installed
  8220.         BX = segment of resident code
  8221.         CX = STACKEY version (CH = major, CL = minor)
  8222. Program: STACKEY is a shareware keyboard-input faking TSR
  8223. Index:    installation check;STACKEY
  8224. --------V-16CA00BX6570-----------------------
  8225. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  8226.     AX = CA00h
  8227.     BX = 6570h ("ep")
  8228.     CX = 6570h
  8229. Return: AX = CAFFh if installed
  8230.         BX = segment of resident code
  8231.         CX = ??? (0090h)
  8232. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette
  8233.       settings permanent across mode switches
  8234. SeeAlso: AX=CA00h/BX=7670h
  8235. --------V-16CA00BX7670-----------------------
  8236. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  8237.     AX = CA00h
  8238.     BX = 7670h ("vp")
  8239.     CX = 7670h
  8240. Return: AX = CAFFh if installed
  8241.         BX = segment of resident code
  8242.         CX = ??? (0090h)
  8243. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette
  8244.       settings permanent across mode switches
  8245. SeeAlso: AX=CA00h/BX=6570h
  8246. --------U-16CB00-----------------------------
  8247. INT 16 - PUPClip v1.12+ - INSTALLATION CHECK
  8248.     AX = CB00h
  8249. Return: BX = 4342h if installed
  8250.         AX = version (AH = major version, AL = BCD minor version)
  8251. Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS
  8252.      sessions by SkullC0DEr
  8253. SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h
  8254. SeeAlso: INT 2F/AX=1701h
  8255. --------U-16CB01-----------------------------
  8256. INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION
  8257.     AX = CB01h
  8258. Return: BL = column (0-79)
  8259.     BH = row (0-49)
  8260. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h
  8261. --------U-16CB02-----------------------------
  8262. INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION
  8263.     AX = CB02h
  8264.     BL = column (0-79)
  8265.     BH = row (0-49)
  8266. Return: CF clear if successful
  8267.     CF set on error (invalid position)
  8268. SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h
  8269. --------U-16CB03-----------------------------
  8270. INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION
  8271.     AX = CB03h
  8272. Return: BL = ASCII character at current position
  8273. SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h
  8274. --------U-16CB04-----------------------------
  8275. INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION
  8276.     AX = CB04h
  8277.     BL = ASCII character to store
  8278. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h
  8279. --------U-16CB05-----------------------------
  8280. INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS
  8281.     AX = CB05h
  8282. Return: nothing
  8283. SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h
  8284. --------U-16CB06-----------------------------
  8285. INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS
  8286.     AX = CB06h
  8287. Return: nothing
  8288. SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h
  8289. --------U-16CB07-----------------------------
  8290. INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS
  8291.     AX = CB07h
  8292. Return: nothing
  8293. SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h
  8294. --------U-16CB08-----------------------------
  8295. INT 16 - PUPClip v1.12+ - POP UP
  8296.     AX = CB08h
  8297. Return: CF clear if successful
  8298.     CF set on error (unsupported video mode)
  8299. SeeAlso: AX=CB00h
  8300. --------U-16D724CX00CB-----------------------
  8301. INT 16 U - APCAL v3.20 - GET ???
  8302.     AX = D724h
  8303.     CX = 00CBh
  8304. Return: AX = 0000h
  8305.     BX = 0000h
  8306.     DX:CX -> ??? or 0000h:0000h
  8307. Program: APCAL is an optionally-resident shareware appointment calendar by
  8308.       Gamma Software
  8309. SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  8310. --------U-16D724CX00CC-----------------------
  8311. INT 16 U - APCAL v3.20 - GET ???
  8312.     AX = D724h
  8313.     CX = 00CCh
  8314. Return: AX = 0000h
  8315.     BX = 0000h
  8316.     DX:CX -> ??? (apparently an internal data area)
  8317. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  8318. --------U-16D724CX00CD-----------------------
  8319. INT 16 U - APCAL v3.20 - GET ???
  8320.     AX = D724h
  8321.     CX = 00CDh
  8322. Return: AX = ??? (5345h seen)
  8323. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  8324. --------v-16DD--------------------------
  8325. INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK
  8326.     AH = DDh
  8327. Return: AL = DDh if resident
  8328. SeeAlso: INT 13/AX=FD50h,INT 21/AX=010Fh,INT 21/AX=0B56h
  8329. --------s-16DFDF-----------------------------
  8330. INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
  8331.     AX = DFDFh
  8332. Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
  8333.       "06/18/93" if installed
  8334. --------b-16E000-----------------------------
  8335. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER
  8336.     AX = E000h
  8337. Return: CF clear if successful
  8338.         AL = FAh
  8339.         BX = version number (BCD) (0200h = v2.00)
  8340.     CF set on error (not implemented)
  8341. Notes:    this interface is available on AMI BIOSes built from AMI core version
  8342.       8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later
  8343.     the "Meningitis" virus uses this API when attacking a system equipped
  8344.       with an AMI BIOS; it is supposedly able to write itself into the
  8345.       Flash ROM and thus make itself part of the BIOS
  8346. SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh
  8347. --------b-16E001-----------------------------
  8348. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE
  8349.     AX = E001h
  8350. Return: CF clear if successful
  8351.         AL = FAh
  8352.         BX = number of bytes required to save chipset configuration
  8353.     CF set on error
  8354. SeeAlso: AX=E000h,AX=E002h,AX=E003h
  8355. --------b-16E002-----------------------------
  8356. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET
  8357.     AX = E002h
  8358.     ES:DI -> buffer for storing chipset status
  8359. Return: CF clear if successful
  8360.         AL = FAh
  8361.     CF set on error
  8362. SeeAlso: AX=E000h,AX=E001h,AX=E003h
  8363. --------b-16E003-----------------------------
  8364. INT 16 - AMI BIOS - BIOS-FLASH Interface -  RESTORE CHIPSET STATUS
  8365.     AX = E003h
  8366.     ES:DI -> buffer in which chipset status was previously stored
  8367. Return: CF clear if successful
  8368.         AL = FAh
  8369.     CF set on error
  8370. SeeAlso: AX=E000h,AX=E001h,AX=E002h
  8371. --------b-16E004-----------------------------
  8372. INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp
  8373.     AX = E004h
  8374. Return: CF clear if successful
  8375.         AL = FAh
  8376.     CF set on error
  8377. Note:    this function does not return until the voltage level stabilizes
  8378. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  8379. --------b-16E005-----------------------------
  8380. INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp
  8381.     AX = E005h
  8382. Return: CF clear if successful
  8383.         AL = FAh
  8384.     CF set on error
  8385. Note:    this function does not return until the voltage level stabilizes
  8386. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  8387. --------b-16E006-----------------------------
  8388. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT
  8389.     AX = E006h
  8390. Return: CF clear if successful
  8391.         AL = FAh
  8392.     CF set on error
  8393. Note:    this function performs any delay required to allow the Flash ROM to
  8394.       stabilize in the write-protected state
  8395. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  8396. --------b-16E007-----------------------------
  8397. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE
  8398.     AX = E007h
  8399. Return: CF clear if successful
  8400.         AL = FAh
  8401.     CF set on error
  8402. Note:    this function performs any delay required to allow the Flash ROM to
  8403.       stabilize in the write-enabled state
  8404. SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h
  8405. --------b-16E008-----------------------------
  8406. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT
  8407.     AX = E008h
  8408. Return: CF clear if successful
  8409.         AL = FAh
  8410.     CF set on error
  8411. Desc:    select the Flash ROM if the system contains both EPROM and Flash ROM
  8412. Note:    this function performs any delay required to allow the Flash ROM to
  8413.       stabilize in the selected state; if no EPROM is present, this
  8414.       function always returns successfully
  8415. SeeAlso: AX=E000h,AX=E007h,AX=E009h
  8416. --------b-16E009-----------------------------
  8417. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT
  8418.     AX = E009h
  8419. Return: CF clear if successful
  8420.         AL = FAh
  8421.     CF set on error
  8422. Desc:    select the EPROM if the system contains both EPROM and Flash ROM
  8423. Note:    this function performs any delay required to allow the Flash ROM to
  8424.       stabilize in the de-selected state; if no EPROM is present, this
  8425.       function always returns successfully
  8426. SeeAlso: AX=E000h,AX=E006h,AX=E008h
  8427. --------b-16E00A-----------------------------
  8428. INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY
  8429.     AX = E00Ah
  8430.     BX = number of paragraphs
  8431.     ES = starting segment of memory
  8432. Return: CF clear if successful
  8433.         AL = FAh
  8434.     CF set on error
  8435. Desc:    determine whether the specified memory may be used for flash
  8436.       programming
  8437. Note:    always returns error if BX is zero on entry
  8438. SeeAlso: AX=E000h,AX=E00Bh
  8439. --------b-16E00B-----------------------------
  8440. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS
  8441.     AX = E00Bh
  8442.     ES:DI -> buffer for internal cache status (minimum 4Kbytes)
  8443. Return: CF clear if successful
  8444.         AL = FAh
  8445.     CF set on error
  8446. Note:    always returns error if the hardware does not contain internal
  8447.       cache or this call is made in protected mode
  8448. SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch
  8449. --------b-16E00C-----------------------------
  8450. INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS
  8451.     AX = E00Ch
  8452.     ES:DI -> buffer containing internal cache status (minimum 4Kbytes)
  8453. Return: CF clear if successful
  8454.         AL = FAh
  8455.     CF set on error
  8456. Note:    always returns error if the hardware does not contain internal
  8457.       cache or this call is made in protected mode
  8458. SeeAlso: AX=E000h,AX=E00Bh
  8459. --------t-16E0E0-----------------------------
  8460. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  8461.     AX = E0E0h
  8462. Return: AX = 1F1Fh if installed
  8463.         DWORD 0040h:00F0h -> last data block in TSR list (see #0512)
  8464. Note:    the returned TSR list provides support for communication among TSRs
  8465.       built with TurboPower's Turbo Professional and Object Professional
  8466.       libraries for Turbo Pascal
  8467. SeeAlso: AX=F0F0h
  8468. --------b-16E0FF-----------------------------
  8469. INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET
  8470.     AX = E0FFh
  8471. Return: never
  8472. SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL"
  8473. --------U-16ED--BHED-------------------------
  8474. INT 16 - BORLAND TURBO LIGHTNING - API
  8475.     AH = EDh
  8476.     BH = EDh
  8477.     BL = function
  8478.         00h installation check
  8479.         Return: AX = 5205h
  8480.             CH = major version
  8481.             CL = minor version
  8482.         01h identical to function 00h???
  8483.         02h get resident data segment
  8484.         Return: AX = data segment of resident portion
  8485.         03h get resident ???
  8486.         Return: AX = offset of some buffer in resident code seg
  8487.         04h redefine auxiliary dictionary
  8488.         DS:SI -> counted filename string
  8489.         Return: AL = result code
  8490.         05h select active environment
  8491.         AL = environment (00h to 0Ch)
  8492.         Return: AX = status
  8493.                 0000h if OK
  8494.                 0001h if out of range
  8495.         06h toggle AutoProof???
  8496.         AL = state (00h off, 01h on)
  8497.         07h ???
  8498.         08h ???
  8499.         AL = char???
  8500.         CX = ???
  8501.         DX = ???
  8502.         Return: AX = 0, 1 or 2
  8503.         09h ???
  8504.         0Ah ???
  8505.         CX = ???
  8506.         DX = ???
  8507.         Return: AX = ???
  8508.         0Bh check dictionary integrity???
  8509.         DS:SI -> counted dictionary filename string
  8510.         Return: AX = 0, 40h, 80h
  8511.         0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
  8512.         DS:SI -> counted string to check
  8513.         Return: AH = 0
  8514.             AL = result code
  8515.                00h string found in dictionary
  8516.                20h string begins more than one word
  8517.                40h string not found
  8518.         0Dh set ???
  8519.         (sets an internal flag)
  8520.         0Eh spellcheck string (RAM dictionary only)
  8521.         DS:SI -> counted string to check
  8522.         Return: AH = 00h
  8523.             AL = result code
  8524.                 00h string found in dictionary
  8525.                 01h string not found
  8526.                 02h ???
  8527.         0Fh ???
  8528.         10h ???
  8529. Notes:    AX in general returns an error code from most functions.
  8530. Index:    installation check;Turbo Lightning
  8531. --------U-16EF-------------------------------
  8532. INT 16 - CALCULATOR - INSTALLATION CHECK
  8533.     AH = EFh
  8534. Return: AX = 0088h if installed
  8535. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  8536.       Marek Kosznik
  8537. --------b-16F0-------------------------------
  8538. INT 16 - Compaq 386 and newer - SET CPU SPEED
  8539.     AH = F0h
  8540.     AL = speed code (see #0511)
  8541.     if AL=09h,
  8542.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  8543. Note:    also supported by some versions of AMI BIOS dated June 1992 or later;
  8544.       speed codes 0 or 1 are used for Low Speed, 2 for High Speed
  8545. SeeAlso: AH=F1h,AH=F3h
  8546.  
  8547. (Table 0511)
  8548. Values for speed code:
  8549.  00h    equivalent to 6 MHz 80286 (COMMON)
  8550.  01h    equivalent to 8 MHz 80286 (FAST)
  8551.  02h    full 16 MHz (HIGH)
  8552.  03h    toggles between 8 MHz-equivalent and speed set by system board switch
  8553.       (AUTO or HIGH)
  8554.  08h    full 16 MHz except 8 MHz-equivalent during floppy disk access
  8555.  09h    specify speed directly
  8556. --------t-16F0F0-----------------------------
  8557. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  8558.     AX = F0F0h
  8559. Return: AX = 0F0Fh if installed
  8560.         ES:DI -> last data block in TSR list (see #0512)
  8561. Note:    the returned TSR list provides support for communication among TSRs
  8562.       built with TurboPower's Turbo Professional and Object Professional
  8563.       libraries for Turbo Pascal
  8564. SeeAlso: AX=E0E0h
  8565.  
  8566. Format of TurboPower TSR data block:
  8567. Offset    Size    Description    (Table 0512)
  8568.  00h    DWORD    pointer to program tag (counted ASCII string)
  8569.  04h    WORD    interface version number (0400h)
  8570.  06h    DWORD    pointer to command entry point
  8571.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  8572.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  8573. ---swappable TSRs only---
  8574.  12h    DWORD    pointer to swapping data
  8575.  16h    DWORD    pointer to user data
  8576.     more???
  8577. --------b-16F1-------------------------------
  8578. INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
  8579.     AH = F1h
  8580. Return: AL = speed code (see #0511)
  8581.     if AL = 09h, CX = speed code
  8582. Note:    also supported by some versions of AMI BIOS dated June 1992 or later
  8583. SeeAlso: AH=F0h,AH=F3h
  8584. --------b-16F2-------------------------------
  8585. INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
  8586.     AH = F2h
  8587. Return: AL = type
  8588.         00h if 11-bit AT keyboard is in use
  8589.         01h if 9-bit PC keyboard is in use
  8590.     AH = 00h (04/08/93 system ROM)
  8591. --------b-16F3-------------------------------
  8592. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  8593.     AH = F3h
  8594.     AL = new limit
  8595.         00h limit is 6 Mhz
  8596.         01h limit is 8 Mhz/6 Mhz
  8597. SeeAlso: AH=F0h,AH=F1h
  8598. --------U-16F398-----------------------------
  8599. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  8600.     AX = F398h
  8601. Return: AX = 6A73h ("js")
  8602.     BH = BIOS scan code of current hot key
  8603.     BL = ASCII code of current hot key
  8604. Note:    NG.EXE was written by John Socha
  8605. --------b-16F400-----------------------------
  8606. INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
  8607.     AX = F400h
  8608. Return: AH = E2h (*)
  8609.     AL = status
  8610.         00h not present
  8611.         01h enabled
  8612.         02h disabled
  8613.     CX = cache memory size
  8614.         bit 15:    cache size information is NOT valid
  8615.         bits 14-0:    cache memory size in kilobytes
  8616.     DH = cache write technology
  8617.         bit 7:    cache write information is NOT valid
  8618.         bits 6-1:    reserved (0)
  8619.         bit 0:    0 = Write-through caching
  8620.             1 = Write-back caching
  8621.     DL = cache type
  8622.         bit 7:    cache type information is NOT valid
  8623.         bits 6-1:    reserved (0)
  8624.         bit 0:    0 = Direct mapped
  8625.             1 = Two-way set-associative
  8626. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  8627.     many (most) BIOSes return a modified AH when called for an unsupported
  8628.       or non-keyboard function (typically, the highest supported keyboard
  8629.       function [normally 12h] is subtracted from the original AH)
  8630. SeeAlso: AX=F401h,AX=F402h
  8631. --------b-16F401-----------------------------
  8632. INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
  8633.     AX = F401h
  8634. Return: AX = E201h
  8635. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  8636.     many (most) BIOSes return a modified AH when called for an unsupported
  8637.       or non-keyboard function (typically, the highest supported keyboard
  8638.       function [normally 12h] is subtracted from the original AH)
  8639. SeeAlso: AX=F400h,AX=F402h
  8640. --------b-16F402-----------------------------
  8641. INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
  8642.     AX = F402h
  8643. Return: AX = E202h
  8644. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  8645.     many (most) BIOSes return a modified AH when called for an unsupported
  8646.       or non-keyboard function (typically, the highest supported keyboard
  8647.       function [normally 12h] is subtracted from the original AH)
  8648. SeeAlso: AX=F400h,AX=F401h
  8649. --------v-16FA00DX5945-----------------------
  8650. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
  8651.     AX = FA00h
  8652.     DX = 5945h
  8653. Return: CF clear
  8654.     DI = 4559h
  8655.     BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
  8656.         FFFFh if disabled
  8657. Note:    MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
  8658. SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  8659. --------v-16FA01DX5945-----------------------
  8660. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  8661.     AX = FA01h
  8662.     DX = 5945h
  8663. Return: CF clear if successful
  8664.     DI = 4559h
  8665. SeeAlso: AX=FA00h
  8666. --------v-16FA02DX5945-----------------------
  8667. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
  8668.     AX = FA02h
  8669.     DX = 5945h
  8670.     BL = new parameter flags (see #0513)
  8671. Return: CF clear
  8672.     DI = 4559h
  8673.     CL = old value of parameter flags
  8674.  
  8675. Bitfields for VSAFE/VWATCH parameter flags:
  8676. Bit(s)    Description    (Table 0513)
  8677.  7    Protect executable files
  8678.  6    Protect FD boot sector
  8679.  5    Protect HD boot sector
  8680.  4    Boot sector viruses
  8681.  3    Check executable files
  8682.  2    General write protect
  8683.  1    Resident
  8684.  0    HD Low level format
  8685. --------v-16FA03DX5945-----------------------
  8686. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  8687.     AX = FA03h
  8688.     DX = 5945h
  8689. Return: CF clear
  8690.     DI = 4559h
  8691.     AX = 0002h
  8692. --------v-16FA04DX5945-----------------------
  8693. INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
  8694.     AX = FA04h
  8695.     DX = 5945h
  8696. Return: CF clear
  8697.     DI = 4559h
  8698.     BL = hotkey disable flag (nonzero if hotkey disabled)
  8699. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  8700. SeeAlso: AX=FA00h,AX=FA05h
  8701. --------v-16FA05DX5945-----------------------
  8702. INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
  8703.     AX = FA05h
  8704.     DX = 5945h
  8705.     BL = new value of hotkey disable flag (nonzero to disable hotkey)
  8706. Return: CF clear
  8707.     DI = 4559h
  8708. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  8709. SeeAlso: AX=FA00h,AX=FA04h
  8710. --------v-16FA06DX5945-----------------------
  8711. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
  8712.     AX = FA06h
  8713.     DX = 5945h
  8714. Return: CF clear
  8715.     DI = 4559h
  8716.     BL = test status
  8717.         00h don't monitor network drives (default for VWATCH v2.1)
  8718.         FFh monitor network drives (default for VSAFE v2.0)
  8719.     CL = ??? (only VSAFE 2.0)
  8720. SeeAlso: AX=FA07h
  8721. --------v-16FA07DX5945-----------------------
  8722. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
  8723.     AX = FA07h
  8724.     DX = 5945h
  8725.     BL = new state
  8726.         00h don't monitor
  8727.         01h monitor network drives
  8728. Return: CF clear
  8729.     DI = 4559h
  8730. Note:    VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
  8731. SeeAlso: AX=FA00h,AX=FA06h
  8732. --------v-16FA08DX5945-----------------------
  8733. INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
  8734.     AX = FA08h
  8735.     DX = 5945h
  8736. Return: CF clear
  8737.     DI = 4559h
  8738.     AX = ??? (0002h)
  8739.     BX = version (BH=major, BL=two-digit minor)
  8740. Note:    this function is not supported by the PC Tools 9.0 VSAFE v2.0
  8741. SeeAlso: AX=FA00h,AX=FA06h
  8742. --------U-16FE55-----------------------------
  8743. INT 16 U - PC Tools v8+ programs - GET ???
  8744.     AX = FE55h
  8745.     CX = segment of resident program or 0000h for last loaded
  8746.     DX = 0000h
  8747. Return: DX = resident code segment (unchanged if CX=0000h on entry)
  8748.     AX = ??? or 0000h
  8749. Note:    this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
  8750.       and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
  8751.       seem to hook it merely to return the same AX as the CPTASK loaded
  8752.       prior to them returned
  8753. --------U-16FEA4-----------------------------
  8754. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  8755.     AX = FEA4h
  8756. Return: nothing
  8757. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  8758.       code in DESKTOP
  8759. SeeAlso: AX=FFA4h
  8760. --------U-16FEC6-----------------------------
  8761. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  8762.     AX = FEC6h
  8763.     BL = new state (00h enabled, nonzero disabled)
  8764. Return: nothing
  8765. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  8766.       be honored
  8767. --------U-16FED3-----------------------------
  8768. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  8769.     AX = FED3h
  8770.     DS:SI -> 92-byte data record for ???
  8771. Return: ???
  8772. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  8773.       code in DESKTOP
  8774. SeeAlso: AX=FFD3h
  8775. --------U-16FEDC-----------------------------
  8776. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  8777.     AX = FEDCh
  8778. Return: AX,DX destroyed
  8779. Index:    uninstall;CPSCHED
  8780. --------U-16FEEFCX0000-----------------------
  8781. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  8782.     AX = FEEFh
  8783.     CX = 0000h
  8784. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  8785.         BX = segment of resident portion
  8786.         DX = (CPSCHED v8.0) resident CS
  8787. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  8788.       code in DESKTOP
  8789. SeeAlso: AX=FFEFh
  8790. --------U-16FEF1-----------------------------
  8791. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  8792.     AX = FEF1h
  8793.     BX = ???
  8794. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  8795.     DX = 5555h
  8796. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  8797.       code in DESKTOP
  8798. SeeAlso: AX=FFF1h
  8799. --------!---Section--------------------------
  8800.